igbinary_serialize
コンパクト、かつ保存可能な値のバイナリ表現を生成する
&reftitle.description;
stringfalseigbinary_serialize
mixedvalue
値の保存可能なバイナリ表現を生成します。
これは、値の型と構造を失うことなく、
PHP の値を渡したり、保存したりする際に役立ちます。
シリアライズ済みの PHP の文字列を再度 PHP の値に戻すには、
igbinary_unserialize が使えます。
&reftitle.parameters;
value
シリアライズする値。
igbinary_serialize
は、resource 型やいくつかの
object 型を除いた、全ての型を扱えます
(下記を参照ください)。
自分自身への参照を含む配列であっても、
igbinary_serialize
でシリアライズできます。
シリアライズされる配列やオブジェクトにおける循環参照も保存されます。
それ以外の参照は失われます。
オブジェクトをシリアライズする場合、
igbinary はメンバ関数
__serialize()
または
__sleep()
をシリアライズする前にコールしようとします。
これにより、オブジェクトはシリアライズされる直前に
最終的なクリーンアップ処理などを行えます。
同じように、
igbinary_unserialize
でオブジェクトを復元する際にも、
__unserialize()
または
__wakeup()
メンバ関数がコールされます。
オブジェクトの private なメンバは、
メンバの名前の前にクラス名が付加されます。
protected なメンバは、
メンバ名の前に '*'
が付加されます。
これらの先頭に付けられた値は、
シリアライズ/アンシリアライズ 双方の側で、
null バイトとして扱われます。
&reftitle.returnvalues;
任意の場所で保存できる
value のバイナリストリーム表現を含む、
文字列を返します。
ここで返される値は、バイト値を含みうるバイナリ文字列であり、
そういうものとして扱う必要があります。
たとえば、igbinary_serialize
の出力は、データベースでは一般的に
CHAR や TEXT ではなく、
BLOB フィールドに保存する必要があります。
&reftitle.examples;
igbinary_serialize の例
]]>
&example.outputs;
'test',
1 => 'test',
)
]]>
&reftitle.notes;
多くの組み込みの PHP オブジェクトは、
シリアライズできないことに注意して下さい。
しかし、Serializable インターフェイスや、
__serialize()/__unserialize()、
マジックメソッド __sleep()/__wakeup() を実装したオブジェクトは、
シリアライズ可能です。
内部クラスがこれらの要件を満たさない場合、
どんなシリアライザであっても信頼できるやり方でシリアライズできません。
上記のルールには、歴史的な例外が存在します。
内部オブジェクトによっては、
それらのインターフェイスやマジックメソッドがなくても、
シリアライズできるものがありました。
&reftitle.seealso;
serialize
igbinary_unserialize
var_export
json_encode
オブジェクトのシリアライズ
__sleep()
__wakeup()
__serialize()
__unserialize()