__wakeup(),执行unserialize()时,先会调用这个函数
如果说 __sleep() 是白的,那么 __wakeup() 就是黑的了。
那么为什么呢?
因为:
与之相反,`unserialize()` 会检查是否存在一个 `__wakeup()` 方法。如果存在,则会先调用 `__wakeup` 方法,预先准备对象需要的资源。
作用:
__wakeup() 经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。
还是看代码:
<?phpclass Person{ public $sex; public $name; public $age; public function __construct($name="", $age=25, $sex='男') { $this->name = $name; $this->age = $age; $this->sex = $sex; } /** * @return array */ public function __sleep() { echo "当在类外部使用serialize()时会调用这里的__sleep()方法<br>"; $this->name = base64_encode($this->name); return array('name', 'age'); // 这里必须返回一个数值,里边的元素表示返回的属性名称 } /** * __wakeup */ public function __wakeup() { echo "当在类外部使用unserialize()时会调用这里的__wakeup()方法<br>"; $this->name = 2; $this->sex = '男'; // 这里不需要返回数组 }}$person = new Person('小明'); // 初始赋值var_dump(serialize($person));var_dump(unserialize(serialize($person)));
运行结果:
当在类外部使用serialize()时会调用这里的__sleep()方法string(58) "O:6:"Person":2:{s:4:"name";s:8:"5bCP5piO";s:3:"age";i:25;}" 当在类外部使用serialize()时会调用这里的__sleep()方法当在类外部使用unserialize()时会调用这里的__wakeup()方法object(Person)#2 (3) { ["sex"]=> string(3) "男" ["name"]=> int(2) ["age"]=> int(25) }
以上就是PHP中 __wakeup()方法详解的详细内容,更多请关注求知技术网其它相关文章!
Gaehvh Viagra Eqivalent Herbal Tablets – buy viagra and cialis online Prix De Clomid Ibczrg He showed that the wavelength of the matter waves would be h mv – Cialis However on a more detailed review of the relevant articles the Panel decided to reaffirm the content of the guideline.
EVE effect on HCC cell morphology and on EMT markers expression in HCC cells