-
-
class Person { - private $name;
- private $age;
- function __construct($name, $age) {
- $this->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;}
但通常不去直接解析上述序列化生成的字符。
二,反序列化:
-
-
class Person { - private $name;
- private $age;
- function __construct($name, $age) {
- $this->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用法
例子:
-
-
session_start(); - class Person {
- private $name;
- private $age;
- function __construct($name, $age) {
- $this->name = $name;
- $this->age = $age; }
- function say() {
- echo "我的名字叫:".$this->name."
";
- echo " 我的年龄是:".$this->age;
- }}
$_SESSION["p1"] = new Person("张三", 20);
- ?>
-
复制代码
读取 session :
-
-
session_start(); - class Person {
- private $name;
- private $age;
- function __construct($name, $age) {
- $this->name = $name;
- $this->age = $age;
- }
function say() {
- echo "我的名字叫:".$this->name."
";
- echo " 我的年龄是:".$this->age;
- }}
- $_SESSION["p1"] -> say();
- ?>
-
-
复制代码
输出结果:
我的名字叫:张三我的年龄是:20
与序列化一样,注册对象为 session 变量时并不能保存其方法。
因此,在读取 session 变量时,当前文件必须包含对应的类或者 require 对应的类文件。
|