php 魔术方法 __sleep() __wakeup()

__sleep()  __wakeup()

public array __sleep ( void )php

void __wakeup ( void )web

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);

结果:oop

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

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息