对象的序列化serialize()和反序列化unserialize()
class Demo{
public $name;
public $age;
public $sex;
public function __construct($name,$age,$sex){
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
}
//将允许序列化的属性放到数组里返回
public function __sleep(){
return ['name','age'];
}
//反序列化的时候执行的方法
public function __wakeup(){
$this->age=30;
}
}
$demo1=new Demo('小明',20,'男');
//序列化前的对象
echo '我的名字是:'.$demo1->name.',年龄:'.$demo1->age.',性别是:'.$demo1->sex;//我的名字是:小明,年龄:20,性别是:男
//序列化对象
$newDemo1=serialize($demo1);
echo $newDemo1;//__sleep()只允许name和age序列化,所以没有sex
//O:4:"Demo":2:{s:4:"name";s:6:"小明";s:3:"age";i:20;}
//反序列化
$newDemo2=unserialize($newDemo1);//__wakeup()方法改变了age的值
echo '我的名字是:'.$newDemo2->name.',年龄:'.$newDemo2->age;//我的名字是:小明,年龄:30