开发大型PHP项目的技巧与方法[5]
这个功能很强大 只要定义方法 而不去考虑所有对象的类型 在不同的类中按不同的方法实现它们 然后在主脚本中对任意对象使用它们 没有if else 也不需要两个程序员 只有高兴
现在你同意编程是容易的 维护是便宜的 可重用是真的吗?
如果你管理一组程序员 分配工作就是很简单的了 每个人可能负责一个类型的对象和处理它的类
可以通过这个技术实现国际化 根据用户所选的语言字段应用相应的类就可以了 等等
拷贝和克隆
当你创建一个$obj的对象时 你可以通过$obj =$obj来拷贝对象 新的对象是$obj的一个拷贝(不是一个引用) 所以它具有$obj在当时的状态 有时候 你不想这样 你只是想生成一个象obj类一样的一个新的对象 可以通过使用new语句来调用类的构造函数 在PHP中也可以通过序列化 和一个基类来实现 但所有的其它类都要从基类派生出来
进入危险区域
当你序列化一个对象 你会得到某种格式的字符串 如果你感兴趣 你可以调究它 其中 字符串中有类的名字(太好了!) 你可以把它取出来 象
代码:
以下是引用片段
以下是引用片段: <?php $herring=serialize($obj); $vec=explode(´:´,$herring); $nam=str_replace("\"",´´,$vec[2]); ?>
所以假设你创建了一个"Universe"的类,并且强制所有的类都必须从universe扩展,你可以在universe中定义一个clone的方法,如下代码:
以下是引用片段:
以下是引用片段: <?php class Universe { function clone() { $herring=serialize($this); $vec=explode(´:´,$herring); $nam=str_replace("\"",´´,$vec[2]); $ret=new $nam; return $ret; } } //然后 $obj=new Something(); //从Universe扩展 $other=$obj->clone(); ?>
你所得到的是一个新的Something类的对象,它同使用new方法,调用构造函数创建出的对象一样。.wInGWIT.我不知道这个对你是否有用,但是Universe类可以知道派生类的名字是一个好的经验。想象是唯一的限制。
lishixinzhi/Article/program/PHP/201311/21400