php面向对象第是十二篇 对象串行化(序列化)__sleep()和__wakeup()

对象串行化:
在什么情况下需要 对象串行化,?
第一种情况就是把一个对象
在网络中传输的时候要将对象串行化,第二种情况就是把对象写入文
件或是数据库的时候用到串行化
对象串行化(序列化)都是为了方便传输把。
举个例子把:像是:
,就像我们现在想把一辆汽车通过
轮船运到美国去,因为汽车的体积比较大,我们可以把汽车拆开成小
的部件,然后我们把这些部件通过轮般运到美国去,到了美国再把这
些部件组装回汽车。
串行化有两个过程,一个是串行化,就是把对象转化为二进制的
字符串,我们使用 serialize()函数来串行化一个对象,另一个是反串行
化,就是把对象转化的二进制字符串再转化为对象, 我们使用
unserialize()函数来反串行化一个对象。
解释:O代表
在这里插入图片描述

<?php
class people
{
	var $name;
	var $sex;
	var $age;
	function __construct($name="",$sex="",$age="")
	{
		$this->name=$name;
		$this->sex=$sex;
		$this->age=$age;
	}
	function say()
	{
		echo "反串行化 名字:".$this->name.",性别:".$this->sex.",年龄:".$this->age;//二进制变成对象
	}
	function __sleep()
	{
		$arr=array("name","age");//这样做是删除掉sex变量
		return($arr);
	}
	function __wakeup()
	{
		$this->age=40;//反串行化的时候就修改age的值为40,因为sex性别已经删除掉了,所以已经没有了哈
	}
}
$p1=new people("陈业贵","男",20);
$p1_string=serialize($p1);//串行化,这个是转换成二进制。__sleep的时候就转换成二进制(过程中)
echo "串行化:".$p1_string;
echo "<br />";
$p2=unserialize($p1_string);//反串行化,调用__wakeup在转换成对象(过程中)
$p2->say();
?>
©️2020 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值