php魔术方法调用顺序
字数 627 2022-08-27 00:32:35
来看个示例:
<?php
class Test{
public function __construct(){
echo 'construct run';
}
public function __destruct(){
echo 'destruct run';
}
public function __toString(){
echo 'toString run';
return 'str';
}
public function __sleep(){
echo 'sleep run';
return array();
}
public function __wakeup(){
echo 'wakeup run';
}
}
echo '<br>new了一个对象,对象被创建,执行_construct方法</br>';
\(test = new Test();
echo '<br>serialize了一个对象,对象被序列化,先执行_sleep方法,再序列化</br>';
\)sTest = serialize(\(test);
echo '<br>unserialize()了字符串。先执行_wakeup方法,再反序列化</br>';
\)usTest = unserialize(\(sTest);
echo '<br>把Test对象当做字符串使用,执行_toString方法</br>';
\)string = 'use Test obj as str '.$test;
echo '<br>程序执行完毕,对象自动销毁,执行_destruct方法</br>';?>
执行结果:
通过这个例子可以清楚的看到 5 个魔法函数的执行顺序。