4

I was looking through the Wordpress core, and I found this function:

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

First off, I don't even understand why unserialize has been defined since its a native php function. Secondly, what in the world is going on here since its defined recursively without any condition to halt infinite recursion?

Throw me a bone. I'm newbie at this stuff.

4

2 回答 2

3

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

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

    // ...
}

否则你会得到一个致命的错误,说你不能重新声明unserialize()

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


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

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

于 2012-10-04T16:58:08.147 回答
1

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

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

于 2012-10-04T17:01:50.050 回答