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

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息