把对象串行化
有时候需要把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,
等到达另一端时,再还原为原来的对象,这个过程称之为串行化,就像我们现在想把一辆汽
车通过轮船运到美国去,因为汽车的体积比较大,我们可以把汽车拆开成小的部件,然后我们把这些部件通过轮般运到美国去,到了美国再把这些部件组装回汽车。
有两种情况我们必须把对象串行化,第一种情况就是把一个对象在网络中传输的时候要
将对象串行化,第二种情况就是把对象写入文件或是数据库的时候用到串行化。
串行化有两个过程,一个是串行化,就是把对象转化为二进制的字符串,我们使用
serialize()函数来串行化一个对象,另一个是反串行化,就是把对象转化的二进制字符串再转
化为对象, 我们使用unserialize()函数来反串行化一个对象。
PHP 中serialize()函数的参数为对象名,返回值为一个字符串,Serialize()返回的字符串
含义模糊,一般我们不会解析这个串来得到对象的信息,我们只要把返回来的这个字符串传
到网络另一端或是保存到方件中即可。
PHP 中unserialize()函数来反串行化对象,这个函数的参数即为serialize()函数的返回值,
输出当然是重新组织好的对象。代码片段
复制代码 代码如下:
<?
class Person{
//下面是人的成员属性
var $name; //人的名子
var $sex; //人的性别
var $age; //人的年龄
//定义一个构造方法参数为属性姓名$name、性别$sex和年龄$age进行赋值
function __construct($name="", $sex="", $age=""){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
}
//这个人可以说话的方法, 说出自己的属性
function say() {
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";
}
}
$p1=new Person("张三", "男", 20);
$p1_string=serialize($p1); //把一个对象串行化,返一个字符串
echo $p1_string."<br>"; //串行化的字符串我们通常不去解析
$p2=unserialize($p1_string); //把一个串行化的字符串反串行化形成对象$p2
$p2->say();
?>
上例输出结果:
代码片段
O:6:"Person":3:{s:4:"name";s:4:"张三";s:3:"sex";s:2:"男";s:3:"age";i:20;}
我的名子叫:张三性别:男我的年龄是:20
在php5 中有两个魔术方法__sleep()方法和__wakeup()方法,在对象串行化的时候,会调用
一个__sleep()方法来完成一些睡前的事情;而在重新醒来,即由二进制串重新组成一个对象
的时候,则会自动调用PHP 的另一个函数__wakeup(),做一些对象醒来就要做的动作。
__sleep()函数不接受任何参数,但返回一个数组,其中包含需要串行化的属性。末被包
含的属性将在串行化时被忽略,如果没有__sleep()方法,PHP 将保存所有属性。
代码片段
复制代码 代码如下:
<?
class Person{
//下面是人的成员属性
var $name; //人的名子
var $sex; //人的性别
var $age; //人的年龄
//定义一个构造方法参数为属性姓名$name、性别$sex和年龄$age进行赋值
function __construct($name="", $sex="", $age=""){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
}
//这个人可以说话的方法, 说出自己的属性function say()
{
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";
}
//指定串行化时把返回的数组中$name和$age值串行化,忽略没在数组中的属性$sex
function __sleep() {
$arr=array("name", "age");
return($arr);
}
//重新生成对象时,并重新赋值$age为40
function __wakeup() {
$this->age = 40;
}
}
$p1=new Person("张三", "男", 20);
//把一个对象串行化,返一个字符串,调用了__sleep()方法,忽略没在数组中的属性$sex
$p1_string=serialize($p1);
echo $p1_string."<br>"; //串行化的字符串我们通常不去解析
$p2=unserialize($p1_string); //反串行化形成对象$p2重新赋值$age为40
$p2->say();
?>
上例输出值为:
执行结果
O:6:"Person":2:{s:4:"name";s:4:"张三";s:3:"age";i:20;}
我的名子叫:张三性别:我的年龄是:40
相关推荐:
BingAdapter设置数据后没有显示数据?解决方案在这里!,ai中如何把图变形
ChatGPT充值打不开?这几招教你轻松解决问题!,免费的ai写作绘图
AI写作免费一键生成5000字:高效创作的革命性工具
ChatGPT不能加载过去的对话,如何提升你的使用体验?,ai智能衣服
优化标题:如何让你的文章更具吸引力与点击力,整站网站优化解决方案
seo站内优化包括什么营销,seo站内优化操作流程 ,ai 玻璃图标
SEO任何:如何通过精准优化让网站流量突破极限,太原网站建设培训班
AI上的文章属于原创吗?人工智能创作内容的归属问题
zblog站群,zblog怎么样 ,欧卡2ai汽车如何使用
SEO子-为你的网站注入流量的秘密武器,麻城网站网址优化
ChatGPT当前不可用?背后的原因与解决方案全解析,ai propos
ChatGPT目前,我无法查看或打开附件,但我依然能为你提供全面的帮助,苹果ai谷歌ai
SEO更多-让你的企业站点在搜索引擎中脱颖而出,如何结交seo大神
ChatGPT403:引领人工智能新时代,颠覆你的工作与生活方式,ai nak
为什么要seo 运营,为什么需要seo ,ai人物头盔
SEO优化需要给网站做哪些优化工作?,ai捕捉火苗
seo竞价做的什么工作,seo 竞价 ,office智能ai
seo用什么手法,seo方式 ,ai绘画飞翔
ChatGPT免登录:轻松畅聊,无需注册,快速体验AI智能助手,眼泪ai
什么是seo反连接,网站反链多好还是少好 ,网易ai产品
seo网站编辑是做什么,seo网站编辑可在家兼职 ,ai慢直播
seo需要做些什么,做seo的 ,超级ai地图
SEO阶段解析:从入门到精通,助你站稳搜索引擎的前沿,网站建设特定开发
SEO大神如何在激烈的互联网竞争中脱颖而出?,网页设计和网站建设试题
SEO针对中小企业的增长潜力:如何通过精准优化抢占市场先机,网络推广和营销就选y火10星评价
SEO优化:提升网站流量的终极指南,揭阳网站快速推广
seo用什么写属性写,seo属于什么 ,芭田科学施肥AI
SEO优化如何提升网站排名,驾驭搜索引擎流量,三亚网站推广方法
SEO赚钱:如何通过SEO技能在网络上实现财富自由,网站怎么建设推广平台
SEO优化关键技巧:提升网站排名的实战攻略,科大讯飞ai论文写作软件
seo相关知识是什么,seo相关技术 ,ai写作讯飞星火认知大模型
SEO与SEM:谁才是提升网站流量的王者?,Ai中字体如何变形立体
优化整站,让网站飞速增长,打造行业竞争力,广东网站建设与维护
seo重点工作是什么,seo重点工作是什么意思 ,棋谱检查ai
SEO提高:如何通过精准优化让网站流量翻倍,优化排名seo加盟费用
亚马逊seo是什么公司的,“亚马逊” ,ai玩底特律
SEO找词:如何精准找到高效关键词,提升排名和流量,河源网站优化平台
ChatGPT免费版每天提问有次数限制吗?揭秘如何高效使用AI助手!,机甲ai手绘
AI代写文章:高效创作的新风尚
怎样使用AI写文章:释放创作潜能,提升写作效率
优化提长:让企业效能提升的秘密武器,长沙网站建设创意
什么是SEO金融,seo是做什么的 ,ai中转程序
SEO分类:从基础到进阶,全面解析SEO优化的关键要素,新建设网站排名
AI翻译工具的革命-ChatGPT等技术让语言互通无碍,淘宝ai写作检测准吗
ChatGPT最近不好用了?了解这些背后的原因与解决方案,ai sketcher
360ai问答-智能时代的全能助手,未来的智慧生活,ai生成白底
seo需要学些什么内容,学seo的基础 ,中国ai公司年收入
ChatGPT页面怎么拖不动?解决问题的终极指南,日韩AI换脸在线观看
ChatGPT:我目前无法查看或解析附件,您是否遇到过这样的困扰?,ai+燃烧
用AI写文,开启创作新时代