ホームページ >バックエンド開発 >PHPチュートリアル >phpマジックメソッドsleep()wakeup()

phpマジックメソッドsleep()wakeup()

WBOY
WBOYオリジナル
2016-06-23 13:24:331512ブラウズ

__sleep() と __wakeup()

public array __sleep (void)

void __wakeup (void)

serialize() 関数は、クラス p() にマジック メソッド __slee があるかどうかを確認します。 。存在する場合、このメソッドが最初に呼び出され、次にシリアル化操作が実行されます。この関数を使用すると、オブジェクトをクリーンアップし、シリアル化する必要があるオブジェクト内のすべての変数の名前を含む配列を返すことができます。メソッドが何も返さない場合、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 )

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。