シリアル化により、オブジェクトを含む変数を連続バイト データに変換できます。シリアル化された変数をファイルに保存したり、ネットワーク経由で送信したりして、オブジェクトを逆シリアル化する前に定義されたクラスを逆シリアル化して元のデータに戻すことができます。 , PHP は、オブジェクトのプロパティとメソッドを正常に保存できます。そのような目的で、オブジェクトをシリアル化解除した直後に実行する必要がある場合があります。
オブジェクトがシリアル化されるとき。オブジェクトを逆シリアル化した後、PHP は __sleep メソッドを呼び出します。両方のメソッドは、シリアル化する必要があるプロパティを含む配列を返す必要があります。 __sleep メソッドを使用しない場合、PHP はすべてのプロパティを保存します。例 6.16 は、__sleep メソッドと __wakeup メソッドを使用してオブジェクトをシリアル化する方法を示しています。 __sleep メソッドは、ユーザー オブジェクトを逆シリアル化するときに、id 属性が確実に含まれないようにします。この例は、id 属性の新しい値を確立します。実際の開発では、リソース (画像やデータ ストリームなど) を含むオブジェクトにこれらのメソッドが必要になる場合があります。
リスト 6.16 オブジェクトのシリアル化
クラス ユーザー
{
public $name;
public $id;
function __construct()
{
//giveユーザーに一意の ID を与えると別の ID が与えられます
$this->id = uniqid();
function __sleep()
{
//これをシリアル化しません - >id は id をシリアル化しません
return(array("name"))
}
function __wakeup()
{
//ユーザーに一意の ID を与えます
$this->id = uniqid();
}
}
//create オブジェクトを作成します
$u = new User; name = "Leon";
//serialize id 属性はシリアル化されておらず、id の値は破棄されることに注意してください。
$s =serialize($u); //非シリアル化します 逆シリアル化 ID が再割り当てされます
$u2 = unserialize($s);
//$u と $u2 は異なる ID になります $u と $u2 は異なる ID になります ID
print_r ($u);
print_r($u2)>?