我在查看wordpress核心,发现了这个函数:

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

首先,我甚至不明白为什么unserialize被定义为一个本地php函数。第二,既然它是递归定义的,没有任何条件停止无限递归,那么这里到底发生了什么?
给我一根骨头。我是新手。

最佳答案

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

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

    // ...
}

否则,您将得到一个致命的错误,说您不能重新声明unserialize()
它所做的只是向类添加一个unserialize()方法。然后,此方法调用php中的nativeunserialize()函数。看起来很傻,但后来,我没有写wordpress。
我相信我找到了问题的方法:wp-includes/rss.php(第783行)。这确实是RSSCache类的一种方法。
我想他们可能希望在将来编写自己的序列化例程,并且/或者RSSCache的某些子类有自己的serialize()unserialize()

07-28 12:01