ホームページ >バックエンド開発 >PHPチュートリアル >セクション 13 オブジェクトのシリアル化 [13]_PHP チュートリアル

セクション 13 オブジェクトのシリアル化 [13]_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:10:27953ブラウズ


シリアル化により、オブジェクトを含む変数を連続バイト データに変換できます。シリアル化された変数をファイルに保存したり、ネットワーク経由で送信したりして、オブジェクトを逆シリアル化する前に定義されたクラスを逆シリアル化して元のデータに戻すことができます。 , 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

tru​​e

技術記事シリアル化では、オブジェクトを含む変数を連続バイト データに変換できます。シリアル化された変数をファイルに保存したり、ネットワーク経由で送信したりして、シリアル化を解除して元の数値に戻すことができます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。