PHP类基础(12)之序列化和反序列化

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42380348/article/details/100555359
  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;
?> 

猜你喜欢

转载自blog.csdn.net/weixin_42380348/article/details/100555359
今日推荐