这个功能很强大只要定义方法而不去考虑所有对象的类型在不同的类中按不同的方法实现它们然后在主脚本中对任意对象使用它们没有ifelse也不需要两个程序员只有高兴
现在你同意编程是容易的维护是便宜的可重用是真的吗?
如果你管理一组程序员分配工作就是很简单的了每个人可能负责一个类型的对象和处理它的类
可以通过这个技术实现国际化根据用户所选的语言字段应用相应的类就可以了等等
拷贝和克隆
当你创建一个$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
classUniverse{
functionclone(){
$herring=serialize($this);
$vec=explode(´:´,$herring);
$nam=str_replace("\"",´´,$vec[2]);
$ret=new$nam;
return$ret;
}
}
//然后
$obj=newSomething();
//从Universe扩展
$other=$obj->clone();
?>
你所得到的是一个新的Something类的对象,它同使用new方法,调用构造函数创建出的对象一样。TW.WINgWIT.cOM我不知道这个对你是否有用,但是Universe类可以知道派生类的名字是一个好的经验。想象是唯一的限制。
[1] [2] [3] [4] [5]