シリアル化により、オブジェクトを含む変数を連続バイト データに変換できます。シリアル化された変数をファイルに保存したり、ネットワーク経由で送信したりして、オブジェクトを逆シリアル化する前に定義されたクラスを逆シリアル化して元のデータに戻すことができます。 , PHP はオブジェクトのプロパティとメソッドを正常に保存できます。そのような目的のために、PHP は自動的に __sleep メソッドと _ _wakeup メソッドを探します。
オブジェクトがシリアル化されると、PHP は呼び出します。 __sleep メソッド (存在する場合)。オブジェクトを逆シリアル化した後、PHP は __wakeup メソッドを呼び出します。どちらのメソッドも、シリアル化する必要がある属性を含む配列を返す必要があります。 __sleep メソッドを使用しない場合、PHP はすべての属性を保存します。例 6.16 は、オブジェクトをシリアル化する方法を示しています。 __sleep メソッドは、User オブジェクトを逆シリアル化するときに id 属性が含まれないようにします。この例は、実際の開発では、次のように設計されています。リソース (画像やデータ ストリームなど) を含むオブジェクトには、次のメソッドが必要です
オブジェクトのシリアル化
class User
{
public $name;
public $id;
function __construct()
{
//ユーザーに一意の ID を与える 別の ID を与える
$this->id = uniqid ( );
}
function __sleep()
{
//this->id id をシリアル化しない
return(array("name"))
}
function __wakeup()
/ /ユーザーに一意の ID を与えます
$this->id = uniqid();
}
}
//create object オブジェクトを作成します
$u = new User
$u->name = "Leon ";
//serialize it をシリアル化します。id の値は破棄されます。
//unserialize id は再割り当てされます。 = unserialize($s);
//$u と $u2 は異なる ID を持ちます
print_r($u)
?>
http://www.bkjia.com/PHPjc/314231.html
www.bkjia.com
true