PHP コアテクノロジーとオブジェクトシリアル化のベストプラクティス
オブジェクトは、必要なときに使用できるように保存できるデータの集まりです。これがオブジェクトのシリアル化です。 inoclされたシリアル化は、メモリに保存されているさまざまなオブジェクト状態(プロパティ)を保存し、必要に応じてそれらを復元することを意味します。次のコードは、メモリ内のオブジェクトの現在の状態をファイルに保存することを実装します。
$str = Serialize($student);
Echo $str;
File_put_contents('store.txt',$str);
シリアル化された結果を出力します:
O:6:"person":2 :{ s:4:”name”;s:3:”Tom”;s:6:”gender”;s:4:”mail”;}
必要に応じて、このオブジェクトを逆シリアル化して取得します:
$str = file_get_contents ('store.txt');
$student =unserialize($str);
$student->say();
注:シリアル化と逆シリアル化の両方で必要です。そうしないと、オブジェクトを逆シリアル化するときにオブジェクトのクラスの定義が見つからず、間違った結果が返されるように見える場合があります。 オブジェクトがシリアル化された後は、オブジェクトの属性のみが保存されることがわかります。クラスは属性とメソッドで構成され、オブジェクトは属性のコレクションです。同じクラスによって生成された異なるオブジェクトは異なる属性を持ちますが、クラスのコード空間内のメソッド領域のコードを共有します。
拡張機能:serialize/unserialize は PHP に付属のシリアル化関数ですが、この関数セットはシリアル化中に文字列の長さなどの役に立たない情報を生成し、スペースの無駄を引き起こします。 __toString() も一種のシリアル化です。このうち、json_encode/json_decode は、独自のシリアル化と逆シリアル化を実装するのに適しています。