PHP程序对象、数组串行化(序列化)
对象串行化:
使用情况:
对象的创建的时候被存储到内存里,在解析的时候被销毁,如果机器重启,那么对象也将被销毁在新建。想要保存对象或者将对象传给另一台机器,就需要将对象串行化(序列化)。
将对象转化成字符串叫串行化
将字符串转化成对象叫反串行化
使用方法(1):
1,串行化的时机:
(1)将对象在网络中传输
(2)将对象持久保存
2,$str = serialize($p); $p是一个对象,将对象转成字符串赋值给$str变量。
3,file_put_contents("qq.txt", $str); 将$str字符串保存在qq.txt文件中,在项目配置的根目录下。
4,$str = file_get_contents(11.txt); 从qq.txt文件中取出内容
5,$p = unserialize($str); 将字符串转成对象赋值给$p变量。
使用方法(2):
1,在使用serialize()函数串行化的时候自动调用__sleep()魔术方法。
作用:可以设置需要串行化的对象的属性,如果没有这个魔术方法,就将所有的属性都串行化
使用:只要在这个方法中,返回一个数组,在数组中声明了哪个属性名,那个属性就被串行化;没有在这个数组中的就不 被串行化。对象中的方法还是会串行化的
2,在使用unserialize()函数反串行化的时候自动调用__wakeup()魔术方法
作用:对串行化回来的对象经行初始化,和__construst()和__clone()功能类似
使用:在方法内可以修改属性的值
数组串行化:
使用情况:
在跨语言,跨设备传输数组时,由于两者之间的数据格式不同,所以要将数据统一转成json(JavaScript object )格式传输
使用方法:
(1)使用json_encode()将变量(数组、对象)转化成JSON字符串。如:$str = json_encode($var);
(2)使用json_decode()将JSON字符串转化成变量(数组、对象)。如:$var = json_decode($str ,true);这个函数有 两个参数,如果没有第二个参数,则反字符串为对象,如果第二个参数为true,则表示转化成数组。

浙公网安备 33010602011771号