我正在浏览Wordpress核心,我发现了这个功能:
function unserialize ( $data ) {
return unserialize( $data );
}
首先,我甚至不理解为什么unserialize已经被定义,因为它是一个原生的php函数。其次,世界上发生了什么,因为它的递归定义没有任何条件来阻止无限递归?
扔给我一根骨头。我是新手。
答案 0 :(得分:3)
这必须是类中的方法定义,例如:
class SomeClass
{
function unserialize($data)
{
return unserialize($data);
}
// ...
}
否则,您将收到致命错误,指出您无法重新声明unserialize()
。
它只是向一个类添加unserialize()
方法。然后,此方法在PHP中调用本机unserialize()
函数。看起来很傻,但后来,我没有写Wordpress。
我相信我找到了有问题的方法:wp-includes/rss.php
(第783行)。它确实是RSSCache
类的一种方法。
我想他们可能希望将来编写自己的序列化例程和/或RSSCache
的某些子类有自己的serialize()
和unserialize()
。
答案 1 :(得分:1)
NullUserException是正确的。至于解释,这是我最好的镜头。
例如,假设有一天PHP决定弃用unserialize函数。突然之间你必须改变你可以在代码中找到“unserialize()”到新函数名称,并可能进行一些重写。但是,如果您使用自己的函数(如WordPress的方式),您只需更改一次unserialize函数的版本,而不是在任何地方使用它。