PHP マニュアル
前のページ | 第 13章クラスとオブジェクト | 次のページ

# 特殊関数`__sleep` および `__wakeup`

serialize() は、クラスに特殊な名前 `__sleep`を有する関数があるかどうかを調べます。こ れがある場合、この関数はシリアル化の前に実行されます。この関数によ りオブジェクトをクリアし、シリアル化するオブジェクトの全ての変数の 名前を有する配列を返すことが前提とされます。

典型的な `__sleep` の使用法は、オブジェクトが有す る全てのデータベース接続を閉じたり、途中のデータをコミットしたり、 似たようなタスクのクリアを行うといったものです。また、オブジェクト が非常に大きく、かつ、完全に保存する必要がない場合、この関数が有用 です。

逆に、 unserialize() は、特殊な名前 `__wakeup` を有する関数が存在するかどうかを確認し ます。これが存在する場合、この関数は、そのオブジェクトが有する全て のリソースを再構築することが可能です。

典型的な`__wakeup`の使用法は、シリアル化により失っ たデータベース接続を全て再度復旧したり、その他の再初期化作業を実行 したりといったものです。

前のページ | ホーム | 次のページ
オブジェクトのシリアル化 - セッションでのオブジェクト | 上に戻る | コンストラクタの内部での参照