当前位置:首页> PHP教程> PHP精通
关键字
文章内容
开发大型PHP项目的方法(四)
 
 
修改时间:[2010/01/16 13:39]    阅读次数:[834]    发表者:[起缘]
 
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的后续版本中有全序列化的特性。