兆鹏和您学PHP5——PHP5中的数据串行化

来源:互联网 发布:unity3d解包 编辑:程序博客网 时间:2024/05/24 03:23

    今天我和大家分享我学习PHP5学习中的心得——数据(对象)的串行化,欢迎大家批评指正。

    (Why)为什么要数据串行化:也许我们在页面中,建立了一个数据结构对象,需要将该对象保存在文件系统或者通过网络传递给其他终端,那么我们需要将传递或者写入磁盘的数据进行串行化。而在重新读取被串行化数据或在其他终端接收被串行的数据时,我们需要反串行化。


    (How)如何串行化:在PHP5中有两个函数,一个是serialize(object),另一个是unserialize(object),前者是将一个对象串行化,后者是将对象反串行化。特别注意的是,在对象中,可以有两个函数,其一是_sleep函数,这个函数应该返回一个数组,该数组内的元素是需要串行化的数据名,因此你可以选择该对象中哪些数据结构是需要串行化的,而某些又是可以舍弃的。同理,还有一个_wakeup函数,该函数应该给出创建序列化中丢弃数据重新创建的方法,即如果序列化时丢弃了数据ID,那么则应该在_wakeup中给出反序列化时创建id。


   (Example)

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

谢谢支持《兆鹏与您学PHP5》

原创粉丝点击