シリアライズ


「6.6シリアライズ」からのメモ。


PHPではオブジェクトをシリアライズするのにはserialize()/unserialize()を使用します。

<?php
class ClassA
{
  public $name;

  public function __sleep()
  {
    echo "start serialize...\n";
    return array("name");
  }

  public function __wakeup()
  {
    echo "start unserialize...\n";
  }
}

$hoge = new ClassA;
$hoge->name = "alice";

$enc = serialize($hoge);
$dec = unserialize($enc);
print_r($dec);
?>
start serialize...
start unserialize...
ClassA Object
(
    [name] => alice
)

__sleep()を定義しておくとシリアライズ前に実行されます。戻り値にはシリアライズすべき変数名の配列を返す必要があります。
__wakeup()を定義しておくとデコード後に実行されます。


オブジェクトだけでなく、配列もシリアライズできるみたいです。

<?php
$hoge = array("a" , "b" , "c");
$enc = serialize($hoge);
$dec = unserialize($enc);
print_r($dec);
?>
Array
(
    [0] => a
    [1] => b
    [2] => c
)