为什么反序列化嵌套在 Wordpress 核心中的另一个反序列化函数中



我正在浏览Wordpress核心,我发现了这个功能:

function unserialize ( $data ) {
    return unserialize( $data );
}

首先,我什至不明白为什么要定义反序列化,因为它是一个本机 php 函数。 其次,自从它被递归定义而没有任何条件来阻止无限递归以来,这里到底发生了什么?

扔给我一根骨头。 我是这方面的新手。

这必须是类中的方法定义,例如:

class SomeClass
{
    function unserialize($data) 
    { 
        return unserialize($data);
    }
    // ...
}

否则,您会收到一个致命错误,指出您无法重新声明unserialize()

它所做的只是向类添加一个unserialize()方法。然后,此方法调用 PHP 中的本机unserialize()函数。看起来很傻,但是,我没有写Wordpress。


我相信我找到了有问题的方法:wp-includes/rss.php(第 783 行)。这确实是RSSCache类的方法。

我想他们将来可能想编写自己的序列化例程和/或RSSCache的某些子类有自己的serialize()unserialize()

NullUserException 是正确的。就解释而言,这是我最好的镜头。

例如,假设有一天 PHP 决定弃用反序列化函数。突然之间,你必须将代码中可以找到"unserialize()"的任何地方更改为新的函数名称,并可能进行一些重写。但是,如果您使用自己的函数,例如WordPress的方式,您所要做的就是更改一次反序列化函数的版本,而不是在所有地方使用它。

最新更新