我决定学习PHP中的面向对象的基础知识,但是我遇到了这段代码,但我不明白这行是如何工作的:
class Example
{
private $obj;
function __construct()
{
// some PHP code...
}
function __wakeup()
{
if (isset($this->obj)) return $this->obj->evaluate();
}
}class CodeSnippet
{
private $code;
function evaluate()
{
eval($this->code);
}}
// some PHP code...
$user_data = unserialize($_POST['data']);
// some PHP code...
在函数__wakeup()中,此行:
$this->obj->evaluate();
这是如何工作的?将函数传递给属性是什么意思?并且该函数不接受任何参数。
我认为在您的Example类中,将实例化Codesnippet对象,然后将其传递给私有属性$ obj($this->obj = new CodeSnippet();
)。
然后,$ user_data应该是一个示例对象,它将调用反序列化函数。当您调用反序列化时,PHP将自动尝试调用__unserialize()或__wakeup()方法。