第十三节--对象串行化_php基础

/*
+-------------------------------------------------------------------------------+
| = 本文为Haohappy读<<Core PHP Programming>> 
| = 中Classes and Objects一章的笔记 
| = 翻译为主+个人心得 
| = 为避免可能发生的不必要的麻烦请勿转载,谢谢 
| = 欢迎批评指正,希望和所有PHP爱好者共同进步! 
| = PHP5研究中心: http://blog.csdn.net/haohappy2004
+-------------------------------------------------------------------------------+
*/
第十三节--对象串行化
串行化可以把变量包括对象,转化成连续bytes数据. 你可以将串行化后的变量存在一个文件里或在网络上传输. 然后再反串行化还原为原来的数据. 你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法. 有时你可能需要一个对象在反串行化后立即执行. 为了这样的目的,PHP会自动寻找__sleep和__wakeup方法.
当一个对象被串行化,PHP会调用__sleep方法(如果存在的话). 在反串行化一个对象后,PHP 会调用__wakeup方法. 这两个方法都不接受参数. __sleep方法必须返回一个数组,包含需要串行化的属性. PHP会抛弃其它属性的值. 如果没有__sleep方法,PHP将保存所有属性.
例子6.16显示了如何用__sleep和__wakeup方法来串行化一个对象. Id属性是一个不打算保留在对象中的临时属性. __sleep方法保证在串行化的对象中不包含id属性. 当反串行化一个User对象,__wakeup方法建立id属性的新值. 这个例子被设计成自我保持. 在实际开发中,你可能发现包含资源(如图像或数据流)的对象需要这些方法. 
Listing 6.16 Object serialization

复制代码 代码如下:

<?php  
   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);  
?>  

时间: 2024-10-22 06:37:57

第十三节--对象串行化_php基础的相关文章

第十三节--对象串行化 -- Classes and Objects in PHP5 [13]

object|php5|对象 +-------------------------------------------------------------------------------+| = 本文为Haohappy读<<Core PHP Programming>> | = 中Classes and Objects一章的笔记 | = 翻译为主+个人心得 | = 为避免可能发生的不必要的麻烦请勿转载,谢谢 | = 欢迎批评指正,希望和所有PHP爱好者共同进步! +-------

第十三节 对象串行化 [13]_php基础

串行化可以把变量包括对象,转化成连续bytes数据. 你可以将串行化后的变量存在一个文件里或在网络上传输. 然后再反串行化还原为原来的数据. 你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法. 有时你可能需要一个对象在反串行化后立即执行. 为了这样的目的,PHP会自动寻找__sleep和__wakeup方法. 当一个对象被串行化,PHP会调用__sleep方法(如果存在的话). 在反串行化一个对象后,PHP 会调用__wakeup方法. 这两个方法都不接受参数. __sl

php面向对象全攻略 (十六) 对象的串行化_php基础

把对象串行化 有时候需要把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串, 等到达另一端时,再还原为原来的对象,这个过程称之为串行化,就像我们现在想把一辆汽 车通过轮船运到美国去,因为汽车的体积比较大,我们可以把汽车拆开成小的部件,然后我们把这些部件通过轮般运到美国去,到了美国再把这些部件组装回汽车. 有两种情况我们必须把对象串行化,第一种情况就是把一个对象在网络中传输的时候要 将对象串行化,第二种情况就是把对象写入文件或是数据库的时候用到串行化. 串行化有两个过程,一个是串行

PHP5.0对象模型探索之对象串行化

php5|对象     串行化可以把变量包括对象,转化成连续bytes数据,你可以将串行化后的变量存在一个文件里或在网络上传输,然后再反串行化还原为原来的数据.你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法. 有时你可能需要一个对象在反串行化后立即执行.为了这样的目的,PHP会自动寻找__sleep和__wakeup方法. 当一个对象被串行化,PHP会调用__sleep方法(如果存在的话). 在反串行化一个对象后,PHP 会调用__wakeup方法. 这两个方法都不接受

php面向对象 自动加载类 对象串行化 多态的应用

自动加载类很多开发者写面向对象的应用程序时,对每个类的定义建立一个 PHP 源文件.一个很大的烦恼是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件的列表. 在软件开发的系统中,不可能把所有的类都写在一个PHP文件中,当在一个PHP文件中需要调用另一个文件中声明的类时,就需要通过include把这个文件引入.不过有的时候,在文件众多的项目中,要一一将所需类的文件都include进来,是一个很让人头疼的事,所以我们能不能在用到什么类的时候,再把这个类所在的php文件导入呢?这就是我们这里

对象串行化

串行化可以把变量包括对象,转化成连续bytes数据. 你可以将串行化后的变量存在一个文件里或在网络上传输. 然后再反串行化还原为原来的数据. 你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法. 有时你可能需要一个对象在反串行化后立即执行. 为了这样的目的,PHP会自动寻找__sleep和__wakeup方法. 当一个对象被串行化,PHP会调用__sleep方法(假如存在的话). 在反串行化一个对象后,PHP 会调用__wakeup方法. 这两个方法都不接受参数. __sl

利用XMLSerializer将对象串行化到XML_XML/RSS

    微软已经意识到串行化数据的重要性,因此在.NET框架中包含了命名空间System.Runtime.Serialization和System.Xml.Serialization以提供串行化功能,为用户自己编写串行化方法提供了一个框架.System.Xml.Serialization命名空间提供了将一个对象串行化为XML格式的基本方法.下面我们来看看如何使用这种方法. XML的魅力     串行化XML是指为了方便存储或传输,把一个对象的公共的域和属性保存为一种串行格式(这里是XML格式)的

XML串行化数据基础

xml|数据 XML文档使用越来越普遍,我们常会把一些系统设置等文件用config或XML文档存文在程序目录下..Net的串行化数据是一个很令人心动的技术,可以很方便地读取一定格式或保存成文件.下面做个简单了练习,对XML串行化作些初步了解.(注:我是在WINDOWS应用程序上做的练习,因怕建立ASP.NETA工程麻烦,下面一大堆东西.其实除了路径外,程序写法基本一致). 先编写一个需要串行化的类,该类是设置一个操作权限的设置文件 using System; namespace Hellosea

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

什么时候使用串行化? 在网络中传输对象的时候 向数据库中保存文件的时候 今天我们要提到四个函数 全部串行化 1.serialize(对象名) 将指定的类对象串行化 $str=serialize($per) //将per对象串行化,结果返回给$str 2.unserialize(串行化后的返回值) 返回结果是对象 $per=unserialize($str); 局部串行化 3.__sleep() 串行化某对象的部分属性. 4.__wakeup()反串行化时,初始化(其实是修改)对象内容 前两个的使