详解PHP对象的串行化与反串行化_php实例

什么时候使用串行化?

在网络中传输对象的时候 向数据库中保存文件的时候

今天我们要提到四个函数

全部串行化

1.serialize(对象名) 将指定的类对象串行化 $str=serialize($per) //将per对象串行化,结果返回给$str
2.unserialize(串行化后的返回值) 返回结果是对象 $per=unserialize($str);

局部串行化

3.__sleep() 串行化某对象的部分属性。

4.__wakeup()反串行化时,初始化(其实是修改)对象内容

前两个的使用方法我们大概已经介绍过,接下来我们简单介绍一下__sleep()和__wakeup()使用方法

1.如果我们只想串行化一个对象中的部分属性我们可以使用 __sleep()函数

在类定义中添加

function__sleep()//只序列化类中的name和age成员
{
$arr=new array('name','age'); name和age必须是类中的属性 可以根据自己的实际需要增加
Return arr;
}

2.假如我们在类串行化的时候,per对象的name属性值为“姜彤”在反序列化的时候我想改成"张三"怎么办

function __wakeup()
{
This->name="张三";
}

详细介绍对象PHP串行化

我们大家有知道PHP串行化可以把变量包括对象,转化成连续bytes数据,你可以将串行化后的变量存在一个文件里或在网络上传输,然后再反串行化还原为原来的数据。文章这里就PHP串行化为大家详细的介绍。你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法. 有时你可能需要一个对象在反串行化后立即执行。为了这样的目的,PHP会自动寻找__sleep和__wakeup方法。

当一个对象被PHP串行化,PHP会调用__sleep方法(如果存在的话). 在反串行化一个对象后,PHP 会调用__wakeup方法. 这两个方法都不接受参数. __sleep方法必须返回一个数组,包含需要串行化的属性. PHP会抛弃其它属性的值。如果没有__sleep方法,PHP将保存所有属性。例子1显示了如何用__sleep和__wakeup 方法来串行化一个对象. Id属性是一个不打算保留在对象中的临时属性. __sleep方法保证在串行化的对象中不包含id属性. 当反串行化一个User对象,__wakeup方法建立id属性的新值. 这个例子被设计成自我保持. 在实际开发中,你可能发现包含资源(如图像或数据流)的对象需要这些方法。

Listing1 Object serialization

class User
{
public $name;
public $id;
function __construct()
{
//give user a unique ID 赋予一个不同的ID
$this->id = uniqid();
}
function __sleep()
{
//do not serialize this->id 不串行化id
return(array("name"));
}
function __wakeup()
{
//give user a unique ID
$this->id = uniqid();
}
}
//create object 建立一个对象
$u = new User;
$u->name = "Leon";
//serialize it 串行化 注意不串行化id属性,id的值被抛弃
$s = serialize($u);
//unserialize it 反串行化 id被重新赋值
$u2 = unserialize($s);
//$u and $u2 have different IDs $u和$u2有不同的ID
print_r($u);
print_r($u2);
?> 

关于PHP对象的串行化与反串行化的相关知识就给大家介绍到这里,希望对大家有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php串行化
, php反串行化
对象串行化
对象串行化、java对象串行化、对象的串行化函数、要串行化某些类的对象、对象的串行化,以便于您获取更多的相关知识。

时间: 2024-08-31 12:45:47

详解PHP对象的串行化与反串行化_php实例的相关文章

php 面向对象详解_对象的串行化和反串行化

  第七章(11)面向对象详解_对象的串行化和反串行化 串行化就是把对象转化成二进制的字符串 (要串行化的对象名称). 反串行化就是把二进制化字化为对象 unserilize(要反串行化的对象名称). 符串转串行化标准: $r1=new Ren("张三",20,"男"); $str=($r1<要串行化的对象>); $file=fopen("tmp.txt"<串行化保存到的文件地址>,"w"<写&g

详解PHP中instanceof关键字及instanceof关键字有什么作用_php实例

PHP5的另一个新成员是instdnceof关键字.使用这个关键字可以确定一个对象是类的实例.类的子类,还是实现了某个特定接口,并进行相应的操作.在某些情况下,我们希望确定某个类是否特定的类型,或者是否实现了特定的接口.instanceof操作符非常适合完成这个任务.instanceof操作符检查三件事情:实例是否某个特定的类型,实例是否从某个特定的类型继承,实例或者他的任何祖先类是否实现了特定的接口.例如,假设希望了解名为manager的对象是否为类Employee的实例: $manager

详解JavaScript对象属性应用

javascript|对象|详解 document对象 含有当前文档信息的对象. 属性 title 当前文档标题,如果未定义,则包含"Untitled". location 文档的全URL. lastModified 含有文档最后修改日期. referrer 调用者URL,即用户是从哪个URL链接到当前页面的. bgColor 背景色(#xxxxxx) fgColor 前景文本颜色. linkColor 超链接颜色. vlinkColor 访问过的超链颜色. alinkColor 激活

详解php5对象

php5对象 将php5的对象和它的先辈php4对象进行比较实在有些不公平, 不过php5对象使用的API函数还是遵循php4的API构建的. 如果你已经阅读了第10章"php4对象", 你将会对本章内容多少有些熟悉. 在开始本章之前, 可以像第10章开始时一样, 重命名扩展为sample3并清理多余的代码, 只保留扩展的骨架代码. 进化史 在php5对象变量中有两个关键的组件. 第一个是一个数值的标识, 它和第9章"资源数据类型"中介绍的数值资源ID非常相似, 扮

详解JavaScript对象序列化_javascript技巧

一.什么是对象序列化? 对象序列化是指将对象的状态转换为字符串(来自我这菜鸟的理解,好像有些书上也是这么说的,浅显易懂!): 序列化(Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程(来自"百度百科-序列化",学术性强,略显高端): 二.为什么会有对象序列化? 世间万物,都有其存在的原因.为什么会有对象序列化呢?因为程序猿们需要它.既然是对象序列化,那我们就先从一个对象说起: var obj = {x:1, y:2};   当这句代码运行时,对象obj的内

C#基础知识回顾--串行化与反串行化

        串行化是指存储和获取磁盘文件.内存或其他地方中的对象.在串行化时,所有的实例数据都保存到存储介质上, 在取消串行化时,对象会被还原,且不能与其原实例区别开来.只需给类添加Serializable属性,就可以实现串行化实 的成员.反串行化是串行化的逆过程,数据从存储介质中读取出来,并赋给类的实例变量.串行化能保存现有对象的所有状态, 我想我们以前见过的一些游戏的角色账户中的dat文件应该就是被串行化的结果.我尝试了打开一个dat文件,果真得到了 我需要的信息,一些角色的等级之类的信

详解JavaScript对象和数组_javascript技巧

许多高级编程语言都是面向对象的,比如C++.C#和Java等高级程序设计语言,那么一种面向对象语言有哪些基本要求呢?下面我们就通宿地说一下面向对象的一些知识. 一种面向对象语言需要向开发者提供四种基本能力:        (1)封装:把相关的信息(无论数据或方法)存储在对象中的能力        (2)聚集:把一个对象存储在另一个对象内的能力        (3)继承:由另一个类(或多个类)得来类的属性和方法的能力        (4)多态:编写能以多种方法运行的函数或方法的能力       

详解state状态模式及在C++设计模式编程中的使用实例_C 语言

每个人.事物在不同的状态下会有不同表现(动作),而一个状态又会在不同的表现下转移到下一个不同的状态(State).最简单的一个生活中的例子就是:地铁入口处,如果你放入正确的地铁票,门就会打开让你通过.在出口处也是验票,如果正确你就可以 ok,否则就不让你通过(如果你动作野蛮,或许会有报警(Alarm),:)). 有限状态自动机(FSM)也是一个典型的状态不同,对输入有不同的响应(状态转移). 通常我们在实现这类系统会使用到很多的 Switch/Case 语句,Case 某种状态,发生什么动作,C

详解WordPress中添加和执行动作的函数使用方法_php技巧

add_action()(添加动作)add_action() 函数用来挂载一个函数到动作钩子上. 用法 add_action( $tag, $function_to_add, $priority, $accepted_args ); 参数 $hook (字符串)(必须)挂载函数的动作名称. 默认值:None $function_to_add (回调函数)(必须)挂载的函数,直接填写字符串形式的函数名即可. 默认值:None $priority (整数)(可选)动作执行的优先级,数值越小越先被执行