1. 序列化(serialize):将内存的变量数据,“保存”到文件中的持久数据的过程
  2. 反序列化(unserialize):将序列化过存储到文件中的数据,恢复到程序代码的变量表示形式的过程。简化就是:将文件变为内存;
<?php 
//对象的序列化
// 为什么对象序列化,因为对象没有对应实体,内存数据是“稍纵即逝”的;——通常,程序执行结束,立即全部销毁。
//序列化就是将对象转为二进制的字符串进行描述,保存到变量或者文件中
// 序列化:serialize($obj)
// 反序列化:unserialize($obj);
class Staff{
public $name;
public $age;
public $salary;
public function __construct($name,$age,$salary=0){
$this->name=$name;
$this->age=$age;
$this->salary=$salary;
}

public function __sleep(){
//将允许序列化的对象属性放在一个数组中返回
return ['name','age'];
}
//对完成反序列化的对象进行属性值的修改
public function __wakeup(){
$this->age=48;
}
}
$obj1 = new Staff('peter',28,5000);
//序列化之前的对象属性
echo '我的姓名是:'.$obj1->name.'年龄是:'.$obj1->age,'工资是:'.$obj1->salary;
echo "<hr>";
$objStr = serialize($obj1);
echo '序列化之后的对象:'.$objStr;
echo "<hr>";
$obj2 = unserialize($objStr);
echo '我的姓名是:'.$obj2->name,' 年龄是:'.$obj2->age;
?>