的串行化接口存在于PHP库来构建提供custimised serialzing的类。PHP的serialize()函数能够将大多数值序列化为可存储的表示形式。但是,用户定义类的对象无法序列化。该接口使之成为可能。
Serializable { /* Methods */ abstract public serialize ( void ) : string abstract public unserialize ( string $serialized ) : void }
Serializable::serialize —对象的字符串表示形式
Serializable::unserialize —从序列化的字符串表示形式构造对象
内置的serialze()函数生成一个值的可存储表示
serialize ( mixed $value ) : string
unserialize()函数从存储的表示形式创建一个PHP值
unserialize ( string $str [, array $options ] ) : mixed
在以下示例中,字符串变量用于myclass的私有属性。当内置serialize()
函数使用此类的对象作为参数时,serialize()
将自动调用method。类似地,unserialize()
函数使用字符串prvate属性重建对象。
<?php class myclass implements Serializable { private $arr; public function __construct() { $this->arr = "nhooo India (p) Ltd"; } public function serialize() { echo "Serializing object..\n"; return serialize($this->arr); } public function unserialize($data) { echo "Unserializing object..\n"; $this->arr = unserialize($data); } public function getdata() { return $this->arr; } } $obj = new myclass; $serobj = serialize($obj); var_dump ($serobj); $obj1 = unserialize($serobj); var_dump($obj1->getdata()); ?>
输出结果
上面的程序显示以下输出
Serializing object.. string(55) "C:7:"myclass":36:{s:28:"nhooo India (p) Ltd";}" Unserializing object.. string(28) "nhooo India (p) Ltd"