串行化后的字符串如果被反串行化的变量是为了建立JavaScript对象,则成功恢复该对象的结构后,PHP将自动尝试执行该对象的__wakeup()成员函数(如果其存在),屏蔽这个特性只需将其设为空即可。
在这个传输过程中,我们知道,实际上只能够传递字符流,字符流是一维(扁平)的,然而很多对象却是多维的,如果要传递的对象是一个字符串,那么很简单,我们直接将其作为传递的内容就可以了,如果要传递的对象是一个数组或者其他的结构呢,我们就需要用字符流来描述他,就比如在电话里面,我问你的名字是什么。
你会告诉我,你的名字是张三、李四,而我问你,你的长相如何呢,你就需要用文字向我描述了,我们进行数据传递的媒介往往和这条电话线路一样,只能传递字符流,而我们描述对象的过程,实际上就是串行化的过程。#t#
另外,串行化也可以用于对对象的持久化存储,也许你曾经也和我一样,想着在数据库的某一个字段中存储一个对象,现在我们可以非常简单的做到这一点,并且,你的这个数据库字段不需要设定为特殊格式,设定为varchar就可以了(当然,如果对象很大,你可能需要设定为text)。
好了,我想What和Why的问题你都了解了,本节最后我们来讲点理论性强一些的内容,就是如何使用PHP串行化和反串行化数据,如何将JavaScript对象串行化(即变为JSON格式)和如何将其反串行化,最后则是如何将建立JavaScript对象的串行化建立关系。
PHP为我们提供了两个函数,用来进行串行化和反串行化的操作,这两个函数分别是:serialize()和unserialize(),他们适用于PHP4和PHP5,下面分别进行讲解:
serialize()
(PHP 4, PHP 5, PECL axis2:0.1.0-0.1.1)serialize — 获得一个可存储的表述值
说明
string serialize ( mixed $value )获得一个可存储的表述值本函数用于无损的存储或者传递PHP变量值和结构。如果需要将已经串行化的值转回PHP变量,可以使用unserialize()函数。
参数
即被串行化的表达式。serialize()处理除资源指针之外的所有类型,你甚至可以将含有指向自身元素的数组串行化。你串行化的含有循环指向的数组或者对象一样会被存储,其他的指向则会丢失。
当串行化对象时,PHP会尝试首先调用其成员函数__sleep()。这将允许对象在被串行化之前进行诸如最后的清理工作等。同样地,当使用unserialize()函数将对象恢复时,会调用成员建立JavaScript对象返回值返回一个可以被存储在任何地点的包含对象的字节流表达式的字符串。
网站栏目:阐述建立JavaScript对象的使用及相关技巧
转载注明:http://www.shufengxianlan.com/qtweb/news4/364904.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联