php序列化示例代码
<?php
class Person {
public $name = "Tom";
private $age = 18;
protected $sex = "male";
public function hello() {
echo "hello";
}
}
$class = new Person();
$class_ser = serialize($class);
echo $class_ser;
?>输出:
O:6:"Person":3:{s:4:"name";s:3:"Tom";s:11:"Personage";i:18;s:6:"*sex";s:4:"male";}- 其中,从前往后依次为:O代表object,如果是数组则是 i;6代表对象名长度;Person是对象名;3是对象里面的成员变量的数量;括号里面 s 代表 string 数据类型,如果是 i 则代表 int 数据类型;4代表 属性名的长度;name即属性名;s同前面;3 代表属性值长度;Tom即属性值,后面同理(数字不显示长度)。同时注意到类里面的方法并不会序列化。
- 根据成员变量的的修饰类型不同,在序列化中的表示方法也有所不同。可以看到代码中三个修饰类型分别是public、private、protected。

public,没有变化private,会变成%00类名%00属性名protected,会变成%00*%00属性名
%00为空白符,空字符也有长度,一个空字符长度为 1,%00 虽然不会显示,但是提交还是要加上去。
- 总结:一个类经过序列化之后存储在字符串的信息只有 类名称 和 类内成员属性键值对,序列化字符串中没有将类方法一并序列化。