序列化
PHP程序为了保存和转储对象,提供了序列化的方法,序列化是为了在程序运行的过程中对对象进行转储而产生的。
序列化可以将对象转换成字符串,但仅保留对象里的成员变量,不保留函数方法。
PHP序列化的函数为serialize,反序列化的函数为unserialize.
举个栗子:
输出结果:
O
:表示对象
:4
:表示该对象名称有四个字符
"Test"
:表示该对象的名称
3
:表示该对象有3个成员变量
接着是括号里面的,这个类的三个成员变量由于变量前的修饰不同,在序列化出来后显示的也不同。
s:1:"a";s:5:"ThisA";
:以 ;
分开变量名和变量值,变量名为1个字符的a,变量值为”ThisA”
s:4:"*b";s:5:"ThisA";
:多了 *
,用以区分 protected 修饰符,另外实际页面中会出现乱码,实际上 protected属性的表示方式是在变量名前加个%00%00
s:7:"Testc";s:5:"ThisC";
: 在变量名前加上%00类名%00
可以看到, 序列化后的字符串中并没有包含这个test方法的信息, 因为序列化不保存方法。
反序列化
反序列化就是序列化的逆过程,即对于将对象进行序列化后的字符串,还原其成员变量的过程。
暂无评论内容