(PECL igbinary >= 1.1.1)
igbinary_serialize — コンパクト、かつ保存可能な値のバイナリ表現を生成する
値の保存可能なバイナリ表現を生成します。
これは、値の型と構造を失うことなく、 PHP の値を渡したり、保存したりする際に役立ちます。
シリアライズ済みの PHP の文字列を再度 PHP の値に戻すには、 igbinary_unserialize() が使えます。
value注意: オブジェクトの private なメンバは、 メンバの名前の前にクラス名が付加されます。 protected なメンバは、 メンバ名の前に
'*'が付加されます。 これらの先頭に付けられた値は、 シリアライズ/アンシリアライズ 双方の側で、 null バイトとして扱われます。
任意の場所で保存できる
value のバイナリストリーム表現を含む、
文字列を返します。
ここで返される値は、バイト値を含みうるバイナリ文字列であり、
そういうものとして扱う必要があります。
たとえば、igbinary_serialize()
の出力は、データベースでは一般的に
CHAR や TEXT ではなく、
BLOB フィールドに保存する必要があります。
例1 igbinary_serialize() の例
<?php
$ser = igbinary_serialize(['test', 'test']);
echo urlencode($ser), "\n";
var_export(igbinary_unserialize($ser));
?>上の例の出力は以下となります。
%00%00%00%02%14%02%06%00%11%04test%06%01%0E%00 array ( 0 => 'test', 1 => 'test', )
注意: 多くの組み込みの PHP オブジェクトは、 シリアライズできないことに注意して下さい。 しかし、Serializable インターフェイスや、 __serialize()/__unserialize()、 マジックメソッド __sleep()/__wakeup() を実装したオブジェクトは、 シリアライズ可能です。 内部クラスがこれらの要件を満たさない場合、 どんなシリアライザであっても信頼できるやり方でシリアライズできません。 上記のルールには、歴史的な例外が存在します。 内部オブジェクトによっては、 それらのインターフェイスやマジックメソッドがなくても、 シリアライズできるものがありました。