的串行化接口存在于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"