igbinary_unserialize
(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 ディレクティブ
unserialize_callback_func ディレクティブで指定したコールバックは、未定義のクラスをアンシリアライズしようとした場合にコールされます。 コールバックが指定されない場合は、__PHP_Incomplete_Class がインスタンス化されます。
戻り値
変換済の値を返します。 値の型は、 bool, int, float, string, array, object, null があり得ます。
渡された文字列が アンシリアライズ できない場合、
false
が返されると共に、
E_NOTICE
または E_WARNING
が発生します。
エラー / 例外
アンシリアライズ を行うハンドラの中で、オブジェクトが Throwable をスローする可能性があります。
注意
参考
- unserialize() - 保存用表現から PHP の値を生成する
- json_encode() - 値を JSON 形式にして返す
- json_decode() - JSON 文字列をデコードする
- hash_hmac() - HMAC 方式を使用してハッシュ値を生成する
- igbinary_serialize() - コンパクト、かつ保存可能な値のバイナリ表現を生成する
- クラスのオートローディング
- unserialize_callback_func
- __wakeup()
- __serialize()
- __unserialize()