前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php面向对象第是十二篇 对象串行化(序列化)__sleep()和__wakeup()

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

作者头像
贵哥的编程之路
发布2020-10-28 15:06:45
3740
发布2020-10-28 15:06:45
举报
文章被收录于专栏:用户7873631的专栏

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

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
<?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/06/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档