帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > PHP编程 >
开发大型PHP项目的方法(四)
作者:匿名 发布时间:2002-12-21 来源:不详
译者:limodou 2000年5月16日





作者:Luis Argerich 译者:limodou













PHP的高级OOP技术





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









序列化(Serializing)





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









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









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









例子 :









-----------------------------------------------------











$obj=new Classfoo();





$str=serialize($obj);









//保存$str到磁盘上













//几个月以后













//从磁盘中装入str









$obj2=unserialize($str)









?>---------------------------------------------------





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









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









我会很高兴地欢迎在PHP的后续版本中有全序列化的特性。



  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·帝国开发再次改版,希望您喜欢!  (2005-03-20)
 ·组件对象开发Web应用的实例分析  (2005-03-12)
 ·网络开发之编程技巧之一(有效验证  (2005-03-12)
 ·规划Web开发战略  (2005-03-12)
 ·使用Visual InterDev进行小组开发  (2005-03-12)
 ·用Java开发组件  (2005-03-12)
 ·有关微软新一代开发技术ASP+的介  (2005-03-12)
 ·用ASP开发一个在线考试程序(二)  (2005-03-12)
 ·用ASP开发一个在线考试程序(三)  (2005-03-12)
 ·用ASP开发一个在线考试程序(四)  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·放眼未来 帝国近期将有重大举措!
·PHPWind6.3.2版通行证发布
·帝国备份王2008版正式发布
·帝国备份王2008版发布
·phpcms2007转帝国CMS5.0程序发布
·dedecms5.1转帝国CMS5.0程序发布
·帝国网站管理系统V5.0商业购买说明
   类别最新
·Windows下集成安装Apache,PHP,MYSQ
·Mysql注入:SQL Injection with MyS
·PHP 的来龙去脉
·PHP 的功能概述
·PHP与其它CGI的比较
·PHP 的编译配置详细选项
·php.ini 配置详细选项
·如何写作PHP程序
·Hello,World
·嵌入方法
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统