您当前的位置: 首页 > 网站编程 > PHP教程 > 对象的串行化

对象的串行化

作者:不详 来源:网络 发布时间: 2011-05-28 17:06 点击:
串行化可以把变量包括对象,转化成连续bytes数据.你可以将串行化后的变量存在一个文件里或在网络上传输.然后再反串行化还原为原来的数据.你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法.有时你可能需要一个对象在反串行化后立即执行.为了这样

对象的串行化

  串行化可以把变量包括对象,转化成连续bytes数据.你可以将串行化后的变量存在一个文件里或在网络上传输.然后再反串行化还原为原来的数据.你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法.有时你可能需要一个对象在反串行化后立即执行.为了这样的目的,PHP会自动寻找__sleep和__wakeup方法.
  
  当一个对象被串行化,PHP会调用__sleep方法(如果存在的话).在反串行化一个对象后,PHP会调用__wakeup方法.这两个方法都不接受参数.__sleep方法必须返回一个数组,包含需要串行化的属性.PHP会抛弃其它属性的值.如果没有__sleep方法,PHP将保存所有属性.
  
  例子图1显示了如何用__sleep和__wakeup方法来串行化一个对象.Id属性是一个不打算保留在对象中的临时属性.__sleep方法保证在串行化的对象中不包含id属性.当反串行化一个User对象,__wakeup方法建立id属性的新值.这个例子被设计成自我保持.在实际开发中,你可能发现包含资源(如图像或数据流)的对象需要这些方法.
  
  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$u2have different IDs$u和$u2有不同的ID
  
  print_r($u);
  
  print_r($u2);
  
  ?>

分享到:
本文"对象的串行化"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4