php標準ライブラリのシーケンス化

1047 ワード

<?php
error_reporting(E_ALL);
class Base implements Serializable{
	private $baseVar;
	public function __construct(){
		$this->baseVar = 'foo';
	}
	public function serialize(){
		return serialize($this->baseVar);
	}
	public function unserialize($serialized){
		$this->baseVar = unserialize($serialized);
	}
}
class Extender extends Base{
	private $extendVar;
	public function __construct(){
		$this->extendVar = 'bar';
	}
	public function serialize(){
		$baseSerialized = parent::serialize();
		return serialize(array($this->extendVar,$baseSerialized));
	}
	public function unserialize($serialized){
		$tmp = unserialize($serialized);
		$this->extendVar = $tmp[0];
		parent::unserialize($tmp[1]);
	}
}
$instance = new Extender();
$serialized = serialize($instance);
$restored = unserialize($serialized);

?>