name = $name; $this->age = $age; }function say() {
echo 我的名字叫:.$this->name.
;echo 我的年龄是:.$this->age; }}$p1 = new person(张三, 20);
$p1_string = serialize($p1);//将对象序列化后写入文件$fh = fopen(p1.text, w);fwrite($fh, $p1_string);fclose($fh);?>
复制代码
打开 p1.text 文件,输入内容:o:6:person:2:{s:12: person name;s:4:张三;s:11: person age;i:20;}但通常不去直接解析上述序列化生成的字符。
二,反序列化:
name = $name; $this->age = $age; } function say() {echo 我的名字叫:.$this->name.
;echo 我的年龄是:.$this->age; }}$p2 = unserialize(file_get_contents(p1.text));
$p2 -> say();?>
复制代码
输出结果:我的名字叫:张三我的年龄是:20提示由于序列化对象不能序列化其方法,所以在 unserialize 时,当前文件必须包含对应的类或 require 对应的类文件。
序列化只能用于有限用户的情况下,因为需要为每个用户单独存储或写入文件,且保证文件名不能重复。在用户不能正常退出浏览器的情况下,不能保证文件被删除。对象注册为 session 变量。当用户数量很多时,可以考虑用 session 来保存对象。
有关session的更多信息,请参见文章:php中session的简单例子php session操作类(附实例)php session函数集php中session过期设置的方法详解php中session的应用举例php会话技术之session用法举例php注销session信息php5中cookie与session用法
例子:
name = $name; $this->age = $age; } function say() {echo 我的名字叫:.$this->name.
;echo 我的年龄是:.$this->age; }}$_session[p1] = new person(张三, 20);
?>
复制代码
读取 session :
name = $name;$this->age = $age;}function say() {
echo 我的名字叫:.$this->name.
;echo 我的年龄是:.$this->age;}}$_session[p1] -> say();?>
复制代码
输出结果:我的名字叫:张三我的年龄是:20与序列化一样,注册对象为 session 变量时并不能保存其方法。因此,在读取 session 变量时,当前文件必须包含对应的类或者 require 对应的类文件。