【PHP8.x】__unserializeメソッドの使い方

__unserializeメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

__unserializeメソッドは、unserialize()関数によってArrayObjectのインスタンスが復元される際に、オブジェクトの状態を初期化するために自動的に呼び出されるマジックメソッドです。このメソッドは、__serialize()メソッドと対になる関係にあり、オブジェクトのシリアライズとデシリアライズ(復元)のプロセスで重要な役割を果たします。具体的には、__serialize()メソッドがオブジェクトの状態を保存するために返したキーと値のペアの配列を、__unserialize()メソッドが唯一の引数として受け取ります。そして、その配列のデータをもとに、オブジェクトのプロパティを再構築します。ArrayObjectの場合、このメソッドはオブジェクトが内部で保持している配列データを正しく復元するために使用されます。開発者がこのメソッドを直接コーディングで呼び出すことは想定されておらず、unserialize()関数の実行時にPHPエンジンによって内部的に処理が実行されます。この仕組みは、従来のSerializableインターフェースに代わる、より安全で新しいシリアライズの方法として推奨されています。

構文(syntax)

1<?php
2
3class SerializableArray extends ArrayObject
4{
5    // unserialize()関数でオブジェクトが復元される際に自動的に呼び出されるメソッド
6    public function __unserialize(array $data): void
7    {
8        // 親クラスの復元ロジックを呼び出す
9        parent::__unserialize($data);
10    }
11}
12
13// SerializableArrayクラスのインスタンスを作成
14$originalObject = new SerializableArray(['id' => 1, 'name' => 'sample']);
15
16// オブジェクトを文字列に変換(シリアライズ)
17$serializedString = serialize($originalObject);
18
19// 文字列からオブジェクトを復元(デシリアライズ)
20// この処理の中で SerializableArray::__unserialize() が実行される
21$restoredObject = unserialize($serializedString);
22
23// 復元されたオブジェクトの内容を出力
24var_dump($restoredObject);
25
26?>

引数(parameters)

array $data

  • array $data: シリアライズされたオブジェクトのデータを含む配列

戻り値(return)

戻り値なし

戻り値はありません