【PHP8.x】unserialize関数の使い方
unserialize関数は、シリアライズされた文字列をPHPの値に戻す関数です。シリアライズとは、変数やオブジェクトを文字列形式に変換する処理であり、unserialize関数はその逆の操作を行います。この関数を用いることで、ファイルやデータベースに保存されたシリアライズされたデータを、元のPHPの変数やオブジェクトとして復元することができます。
unserialize関数は、シリアライズされた文字列を引数として受け取り、復元された値を返します。復元された値は、元の変数の型(文字列、整数、配列、オブジェクトなど)を保持しています。もしシリアライズされた文字列が不正な形式であった場合、unserialize関数はfalse
を返します。また、オブジェクトのunserialize中にクラスが定義されていない場合、__PHP_Incomplete_Class
オブジェクトが生成されます。
unserialize関数を使用する際には、セキュリティ上の注意が必要です。特に、信頼できないソースからのシリアライズされたデータをunserializeすると、意図しないコードが実行される可能性があります。これは、オブジェクトのunserialize時にマジックメソッド(__wakeup()
など)が自動的に実行されるためです。したがって、unserializeするデータは信頼できるソースからのものに限るか、unserializeの前に厳密な検証を行うことが推奨されます。PHP 7.0以降では、unserialize()
の第2引数にオプションとして許可するクラスの配列を渡すことで、特定のクラスのみunserializeを許可する機能が追加されました。この機能を利用することで、セキュリティリスクを軽減することができます。
基本的な使い方
構文(syntax)
unserialize(string $data, array $options = []): mixed
引数(parameters)
string $data, array $options = []
- string $data: シリアライズされたデータ文字列
- array $options = []: デシリアライズの挙動を制御するオプションの配列
戻り値(return)
mixed
unserialize関数は、PHPのシリアライズ(serialize)関数によって生成された文字列を、元のPHPの値(文字列、数値、配列、オブジェクトなど)に復元して返します。復元に失敗した場合はFALSEを返します。