phpマジックメソッド_sleep() __wakeup()
977 ワード
__sleep()と_wakeup()
public array __sleep ( void )
void __wakeup ( void )
serialize()関数は、クラスにマジックメソッドがあるかどうかをチェックします.sleep().存在する場合は、シーケンス化操作を実行する前にメソッドが呼び出されます.この機能を使用すると、オブジェクトをクリーンアップし、オブジェクト内のすべてのシーケンス化すべき変数名を含む配列を返すことができます.メソッドが何も返さない場合、
例:
結果:
user Object ( [name] => Leo [id] => asas ) user Object ( [name] => Leo [id] => 5621ed9f6614c )
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 )