【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を返します。

【PHP8.x】unserialize関数の使い方 | いっしー@Webエンジニア