序列化
在PHP中,序列化用于存储或传递 PHP 的值的过程中,同时不丢失其类型和结构。序列化对象的时候,只会保存属性值,不会保存常量的值。
序列化对于不同类型得到的字符串格式为:
String : s:size:value;
Integer : i:value;
Boolean : b:value;(保存1或0)
Null : N;
Array : a:size:{key definition;value definition;(repeated per element)}
Object : O:strlen(object name):object name:object size:{s:strlen(property name):property name:property definition;(repeated per property)}
反序列化
反序列化函数用于将单一的已序列化的变量转换回 PHP 的值。
如果传递的字符串不可解序列化,则返回 FALSE,并产生一个E_NOTICE
返回的是转换之后的值,可为integer``float、string、array或object
若被反序列化的变量是一个对象,在成功重新构造对象之后,PHP会自动地试图去调用__wakeup()成员函数(如果存在的话)
__wakeup()函数在对象被构建以后执行,所以$this->username的值不为空。
反序列化时,会尽量将变量值进行匹配并复制给序列化后的对象。