PHP 序列化 serialize对象的方法教程

巴扎黑
发布: 2017-08-09 14:39:06
原创
2594人浏览过

对象的存储与传输

在实际项目应用中,有些任务在一两个页面是无法完成的,由于变量到脚本执行完毕就释放,我们本页所生成的对象想在其它页面使用时便碰到了麻烦。

如果需要将对象及其方法传递到我们想使用对象的页面,比较简单可行的办法是将对象序列化后存储起来或直接传输给需要的页面,另一种办法是将对象注册为 session 变量。

PHP 序列化 serialize对象的方法教程序列化对象

对象序列化,就是将对象转换成可以存储的字节流。当我们需要把一个对象在网络中传输时或者要把对象写入文件或是数据库时,就需要将对象进行序列化。

序列化完整过程包括两个步骤:一个是序列化,就是把对象转化为二进制的字符串,serialize() 函数用于序列化一个对象;另一个是反序列化,就是把对象被序列转化的二进制字符串再转化为对象,unserialize() 函数来反序列化一个被序列化的对象。这样整个过程下来,对象内的类型结构及数据都是完整的。

语法:

立即学习PHP免费学习笔记(深入)”;

string serialize( mixed value )
mixed unserialize( string str [, string callback] )
登录后复制

例子:

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;}
登录后复制

但通常不去直接解析上述序列化生成的字符。

反序列化:

序列猴子开放平台
序列猴子开放平台

具有长序列、多模态、单模型、大数据等特点的超大规模语言模型

序列猴子开放平台 0
查看详情 序列猴子开放平台
name = $name;
        $this->age = $age;
    }

    function say() {
	echo "我的名字叫:".$this->name."
";
	echo " 我的年龄是:".$this->age;
    }
}

$p2 = unserialize(file_get_contents("p1.text"));
$p2 -> say();
?>
登录后复制

运行该例子,输出:

我的名字叫:张三
我的年龄是:20
登录后复制
提示
  1. 由于序列化对象不能序列化其方法,所以在 unserialize 的时候,当前文件必须包含对应的类或者 require 对应的类文件。

  2. 序列化只能用于有限用户的情况下,因为需要为每个用户单独存储或写入文件,且保证文件名不能重复。在用户不能正常退出浏览器的情况下,不能保证文件被删除。

    PHP 序列化 serialize对象的方法教程对象注册为 session 变量

    当用户数量很多时,可以考虑用 session 来保存对象。关于 session 的更多信息,请参见《PHP 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 对应的类文件。

以上就是PHP 序列化 serialize对象的方法教程的详细内容,更多请关注php中文网其它相关文章!

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号