首頁 > 後端開發 > php教程 > php 魔术方法 sleep() wakeup()

php 魔术方法 sleep() wakeup()

WBOY
發布: 2016-06-23 13:24:33
原創
1509 人瀏覽過

__sleep() 和 __wakeup()

public array __sleep ( void )

void __wakeup ( void )

serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。如果存在,该方法会先被调用,然后才执行序列化操作。此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。如果该方法未返回任何内容,则 NULL 被序列化,并产生一个 E_NOTICE 级别的错误。

 

示例:

 class user {    public $name;    public $id;    function __construct() {    // 给id成员赋一个uniq id         $this->id = 'asas';    }    function __sleep() {       //此处不串行化id成员        return(array('name'));    }    function __wakeup() {        $this->id = uniqid();    }}$u = new user();$u->name = "Leo";$s = serialize($u); //serialize串行化对象u,此处不串行化id属性,id值被抛弃$u2 = unserialize($s); //unserialize反串行化,id值被重新赋值//对象u和u2有不同的id赋值print_r($u);print_r($u2);
登入後複製

结果:

user Object ( [name] => Leo [id] => asas ) user Object ( [name] => Leo [id] => 5621ed9f6614c )

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板