首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  HTML/JS/CSS技术专区 » [转帖]开发大型PHP项目的方法(四  


  作者:超比儿
  注册时间:2004-09-17
  主题/回复:9/9
  积分:454
  等级:★★☆(五级)
  称号:略有小成

用户联系方式已设置为保密

 

 发表:2004-09-26 00:18:41 阅读 2297 次 回复 0 次 得分0  |   字号 字色
[转帖]开发大型PHP项目的方法(四
作者:Luis Argerich 译者:limodou 


PHP的高级OOP技术 
  在看过基本的OOP概念后,我就可以向你展示更高级的技术: 

序列化(Serializing) 
  PHP不支持永久对象,在OOP中永久对象是可以在多个应用的引用中保持状态和功能的对象,这意味着拥 
有将对象保存到一个文件或数据库中的能力,而且可以在以后装入对象。这就是所谓的序列化机制。PHP 拥 
有序列化方法,它可以通过对象进行调用,序列化方法可以返回对象的字符串表示。然而,序列化只保存了 
对象的成员数据而不包话方法。 

  在PHP4中,如果你将对象序列化到字符串$s中,然后释放对象,接着反序列化对象到$obj,你可以继续 
使用对象的方法!我不建议这样去做,因为(a)文档中没有保证这种行为在以后的版本中仍然可以使用。(b) 
这个可能导致一种误解,在你把一个序列化后的版本保存到磁盘并退出脚本时。当以后运行这个脚本时,你 
不能期待着在反序列化一个对象时,对象的方法也会在那里,因为字符串表示根本就不包括方法。 

  总而言之,PHP 进行序列化对于保存对象的成员变量非常有用。(你也可以将相关数组和数组序列化到 
一个文件中)。 

例子 : 

-----------------------------------------------------
<?php 

$obj=new Classfoo(); 
$str=serialize($obj); 

//保存$str到磁盘上 


//几个月以后 


//从磁盘中装入str 

$obj2=unserialize($str) 

?>---------------------------------------------------
  你恢复了成员数据,但是不包括方法(根据文档所说)。这导致了只能通过类似于使用$obj2->x来存取 
成员变量(你没有别的方法!)的唯一办法,所以不要在家里试它。 

  有一些办法可以解决这个问题,我把它留着,因为对这篇简洁的文章来说,他们太不好。 

  我会很高兴地欢迎在PHP的后续版本中有全序列化的特性
 
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.002sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版