読者です 読者をやめる 読者になる 読者になる

シリアライズ

tech


「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
)