`

PHP 对象的存储与传输(序列化 serialize 对象)

    博客分类:
  • php
php 
阅读更多

PHP 对象的存储与传输(序列化 serialize 对象)
对象的存储与传输
在实际项目应用中,有些任务在一两个页面是无法完成的,由于变量到脚本执行完毕就释放,我们本页所生成的对象想在其它页面使用时便碰到了麻烦。
如果需要将对象及其方法传递到我们想使用对象的页面,比较简单可行的办法是将对象序列化后存储起来或直接传输给需要的页面,另一种办法是将对象注册为 session 变量。
序列化对象
对象序列化,就是将对象转换成可以存储的字节流。当我们需要把一个对象在网络中传输时或者要把对象写入文件或是数据库时,就需要将对象进行序列化。
序列化完整过程包括两个步骤:一个是序列化,就是把对象转化为二进制的字符串,serialize() 函数用于序列化一个对象;另一个是反序列化,就是把对象被序列转化的二进制字符串再转化为对象,unserialize() 函数来反序列化一个被序列化的对象。这样整个过程下来,对象内的类型结构及数据都是完整的。
语法:
string serialize( mixed value )
mixed unserialize( string str [, string callback] )
例子:
<?php
class Person {
    private $name;
    private $age;

    function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }

    function say() {
	echo "我的名字叫:".$this->name."<br />";
	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;}
但通常不去直接解析上述序列化生成的字符。
反序列化:
<?php
class Person {
    private $name;
    private $age;

    function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }

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

$p2 = unserialize(file_get_contents("p1.text"));
$p2 -> say();
?>
运行该例子,输出:
我的名字叫:张三
我的年龄是:20

分享到:
评论

相关推荐

    028-精通PHP序列化与反序列化之_道_.pdf

    总结起来,PHP序列化与反序列化是实现数据持久化、传输对象状态的强大工具,但同时也带来了安全风险。开发者需要理解它们的工作原理,合理使用,同时注意安全实践,避免出现安全漏洞。通过本文的学习,希望能帮助...

    序列化一个类_php的类的序列化脚本_

    在PHP编程中,序列化是一种将对象转换为可存储或传输格式的过程,通常用于数据库存储、文件保存或者网络传输。这个过程将对象的状态(包括它的属性和方法)转化为字符串,以便于之后的反序列化,即恢复原始对象。在...

    PHP序列化 规则

    PHP序列化是一种将变量转换为可存储或传输的字符串的方法,主要涉及`serialize()`和`unserialize()`两个函数。自PHP 3.05版本起,这两个函数开始支持对象的序列化和反序列化。然而,PHP手册中并未详细解释序列化结果...

    PHP 序列化和反序列化

    在PHP编程中,序列化和反序列化是两个非常重要的概念,它们主要用于数据存储和传输。下面我们将深入探讨这两个概念,以及如何在实际开发中应用它们。 **序列化(Serialization)** 序列化是将变量转换为字符串的...

    PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析

    在PHP开发中,数据序列化是一个经常使用到的功能,它允许开发者将数据结构或对象状态转换为可存储或传输的格式。PHP提供了两种序列化和反序列化的机制,即使用serialize()和unserialize()函数进行PHP特有的序列化与...

    se_mouz_image.rar_serialize_序列化

    在IT领域,序列化是一个非常重要的概念,尤其是在数据存储、网络传输和对象持久化等方面。在PHP中,`serialize()`函数就是用来将变量转化为字符串,这样就可以方便地存储或者通过网络发送。在这个“se_mouz_image....

    PHP中的序列化和反序列化

    在PHP中,序列化和反序列化是两种重要的数据处理技术,用于将变量转换为可存储或传输的格式,然后再恢复为原始数据结构。这两个函数,`serialize()`和`unserialize()`,是PHP内置的,用于在不同场景下处理数据。 `...

    golang实现php里的serialize()和unserialize()序列和反序列方法详解

    - 反序列化(Deserialization)则是将之前存储或传输的序列化格式的字节流恢复为对象的过程。 接下来详细解析golang实现php里的serialize()和unserialize()序列和反序列方法: ### 序列化 在PHP中,serialize()...

    cpp-swooleserialize是目前php7中最快的序列化函数

    在PHP开发中,序列化和反序列化是常见的数据处理操作,它们允许我们将变量的状态转换为字符串以便存储或传输,然后在需要时恢复为原始结构。`swoole_serialize`是一个专门为PHP7设计的高性能序列化库,尤其在C/C++...

    PHP的serialize序列化数据以及JSON格式化数据分析

    在进行数据持久化或网络传输时,数据序列化是一种常见的技术手段,它可以将程序中的对象或数据结构转换成字符串形式,以便存储或在网络中传输。在PHP中,经常使用的序列化方式包括了PHP原生的serialize以及更为通用...

    详解PHP序列化和反序列化原理

    序列化是PHP中将对象或变量的状态信息转换成可以存储或传输的形式的过程,反序列化则是将这些存储或传输后的信息还原成PHP中可以识别的对象或变量的过程。PHP通过serialize()和unserialize()两个函数来实现序列化和...

    php 序列化和反序列化学习-1

    在PHP中,序列化和反序列化是两个重要的概念,它们用于将数据对象转换为字符串以便存储或传输,以及将字符串还原为原始的数据结构。在本文中,我们将深入探讨这两个概念,以及它们在PHP中的应用。 首先,让我们了解...

    php序列化函数serialize() 和 unserialize() 与原生函数对比

    在PHP中,序列化是将变量转换为可存储或传输的字符串的过程,而反序列化则是将该字符串恢复为原始变量。PHP提供了两种主要的序列化方法:`serialize()` 和 `unserialize()` 以及 `json_encode()` 和 `json_decode()`...

    4.Xml序列化器

    - 序列化:将对象转换为可以传输或存储的格式,如XML字符串,以便于在网络上传输或者保存到磁盘。 - 反序列化:将已序列化的数据恢复为原来的对象状态,以便重新使用或操作。 2. 序列化的过程: - 根据对象的...

    php json与xml序列化/反序列化

    在Web开发中,数据交换和存储常常涉及到对象的序列化和反序列化。PHP提供了多种方式来处理这一过程,其中最常用的两种格式是JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)。这两种格式都...

Global site tag (gtag.js) - Google Analytics