(PECL igbinary >= 1.1.1)
igbinary_unserialize — igbinary_serialize() によって保存されたバイナリ表現から、PHP の値を復元する
igbinary_unserialize() は、 igbinary_serialize() によってシリアライズされた単一の値をとり、 それを PHP の変数に戻します。
信頼できないユーザーからの入力をそのまま igbinary_unserialize() に渡してはいけません。 アンシリアライズの時には、 オブジェクトのインスタンス生成やオートローディングなどで コードが実行されることがあり、 悪意のあるユーザーがこれを悪用するかもしれないからです。 シリアル化したデータをユーザーに渡す必要がある場合は、 安全で標準的なデータ交換フォーマットである JSON などを使うようにしましょう。 json_decode() および json_encode() を利用します。
外部で保存されたシリアライズ済みデータを復元する場合、 データの検証に hash_hmac() 関数が使えます。 重要なのは、そのデータを改ざんした者がいないことを保証することです。
igbinary のシリアライズフォーマットでは、 同じ値に対する異なるリファレンスを区別できる方法がありません。 指定された値に対する全ての PHP のリファレンスは、 アンシリアライズされる際に、 同じリファレンスのグループの一部として扱われます。 これは、シリアライズされる際に 異なるリファレンスのグループの一部であったとしても同じです。
str
igbinary_serialize() が生成したシリアライズ済みの値。
もしアンシリアライズする変数がオブジェクトの場合、 オブジェクトが無事再作成された後、igbinary は自動的にメンバ関数 __unserialize() または __wakeup() (存在していれば) をコールしようとします。
注意: unserialize_callback_func ディレクティブ
コールバック関数を設定することが可能です。(不完全な object "__PHP_Incomplete_Class"を得ることを防ぐため) コールバック関数は、アンシリアライズする際に未定義のクラスをインスタ ンス化する必要がある場合にコールされます。 unserialize_callback_func を定義するためには、 php.ini, ini_set(), .htaccess を使用し てください。未定義のクラスをインスタンス化する度に、コールバック関 数がコールされます。この機能を無効とするには、 単純にこの設定を空にしてください。
変換済の値を返します。 値の型は、 bool, int, float, string, array, object, null があり得ます。
渡された文字列が アンシリアライズ できない場合、
false
が返されると共に、
E_NOTICE
または E_WARNING
が発生します。
アンシリアライズ を行うハンドラの中で、オブジェクトが Throwable をスローする可能性があります。
エラーが発生したり、
null
や false
をシリアライズしたものを
アンシリアライズ しようとした場合、
null
または false
を返します。
この特殊ケースについては、
str
を
igbinary_serialize(null)
や
igbinary_serialize(false)
と比較したり、
発生した E_NOTICE
をキャッチすることで扱えます。