对象也是一种在内存中存储的数据类型,它的寿命通常随着生成该对象的程序的终止而终止,有时候,可能需要将对象的状态保存下来,需要时再将对象恢复。对象通过写出
描述自己状态的数值来记录自己,这个过程称对象的串行化:serialize()。串行化就是把整个对象转化为二进制字符串。另一个是反串行化:unserilize(),就是把对象串行化后转化的二进制字符串在转化为对象。
<?php
class Person{
private $name;
private $age;
private $sex;
public function __construct($name,$age,$sex){
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
}
public function speek(){
echo 'my name is '.$this->name.'--'.$this->sex.'--'.$this->age.'<br/>';
}
}
?>
<?php
header('content-type:text/html;charset=utf-8');
require('Person.class.php');
$per=new Person("tony",22,"male");
//对象串行化
$per_serialize=serialize($per);
echo $per_serialize."<br/>";//输出:O:6:"Person":3:{s:12:"Personname";s:4:"tony";s:11:"Personage";i:22;s:11:"Personsex";s:4:"male";}
//将串行化得到的字符串保存到obj.txt中可以实现持久化
file_put_contents("obj.txt",$per_serialize);
//反串行化
$per_unserialize=file_get_contents("obj.txt");
$per2=unserialize($per_unserialize);
$per2->speek();
//输出:my name is tony--male--22
?>