您的位置: 首页 > 技术文档 > 网络编程 > php设计模式介绍之导言
php设计模式介绍之值对象模式 回到列表 php设计模式介绍之编程惯用法
 php设计模式介绍之导言

作者: 时间: 2008-04-10 文档类型:翻译 来自:phpchina

第 1 页 php设计模式介绍之导言 [1]
第 2 页 php设计模式介绍之导言 [2]

PHP4和PHP5

当我写这本书的时候,PHP5已经发行有一段时间了,但是还没有被公众团体广泛的采用。在我自己的工作上,我已经开始把新的应用程序开发工作迁移到 PHP5.0.3的环境中,而且到目前为止我很高兴的发现PHP5对PHP4的代码具有很好的向后兼容性,同时它的面对对象模型是PHP5最有意义的新特 征之一。

有很多很好的文章和指导手册来处理不同PHP版本之间的对象模型之间的细微差别。但简单来说,PHP5提供了:

  1. 对象柄(将在下面解释,更详细的请见第二章:对象模型的价值)?
  2. 更好的构造器(统一名字,不允许改变)?
  3. 析构器?
  4. 可见度(方法和属性的public公开,protected受保护,private私有)?
  5. 异常处理(可以选择新的语法try{}catch{}来触发错误)?
  6. 静态类?
  7. 映像(动态检查类,方法,属性)?
  8. 类型隐藏?

 PHP5也提供了一些更加模糊的特征:

 新的魔术方法?

  1. __get()和__set()允许你来控制变量存取
  2. __call()让你能动态的截取被call对象的所有属性。
  3. __sleep()和__wakeup()能让你重载序列化的方法
  4. __toString()让你能控制如何用一个字符串来描述这个对象自身。
  5. 自动加载Autoloading(当类第一次被对象化时候,允许用户自动加载该类)?
  6. Final(不允许该方法或者一个类被其子类重载)?

对象柄

 PHP5最好的特性就是采用句柄来定义类,类似于一个文件或者数据库句柄。在PHP函数中使用对象不再是含蓄的复制这个对象,而是提供一个操作句柄。

为了更加清楚的看出其间的不同,我们考虑下面两个例子:

// PHP4 class
class ExampleP1 {
var $foo;
function setFoo($foo) {
$this->foo = $foo`;
}
function getFoo() {
return $this->foo;
}
}
function changeExample($param) {
$param->setFoo(‘blah’);
return $param->getFoo();
}
$obj = new ExampleP1;
$obj->setFoo(‘bar’);
echo $obj->getFoo(); // bar
echo ChangeExample($obj); //blah
echo $obj->getFoo(); // bar

在PHP4中,函数changeExample()中的变量$param是$obj的一个复制,所以,这个函数没有改变原来对象中的$foo的值,这样$obj->getFoo()最终输出的是’bar’。

在PHP5中,由于$obj在函数中只是一个对象操作柄,同样的changeExample()函数确确实实的影响了原来的对象。换句话说,使用操作柄,就不再需要去复制了而$param就是$obj实例。

// PHP5 class
class ExampleP2 {
protected $foo;
function setFoo($foo) {
$this->foo = $foo;
}
function getFoo() {
return $this->foo;
}
}
$obj = new ExampleP2;
$obj->setFoo(‘bar’);
echo $obj->getFoo(); // bar
echo ChangeExample($obj); //blah
echo $obj->getFoo(); // IMPORTANT, produces blah

当你在其他的对象或者这个对象内置的构造函数(__construct)里面使用$this这个变量时,这个问题会变的更加的复杂。

结果是在PHP4中,你几乎总需要:

  1. 创建一个引用对象,就象这样$obj=?& new class;
  2. 在函数中调用引用对象,比如function func(?&$obj_param){}
  3. 通过引用函数来捕捉对象,比如function? &some_func(){}  $return_obj=&some_funct()

事实上,现在有些情况下你也需要复制原始对象。在我的PHP4代码里面,我总是把任何无引用的对象任务比如为一个明显的对象复制注释的很清楚。从长 期来说,这样的一个简短的注释能够极大的减轻任何一个维护你代码的人的头痛(译者注:这样的代码可维护性很强)。引用传值,对象柄和对象复制的相关知识将 在第二章“对象模式的价值”里面详细讲解。

尽管我个人很偏向于使用PHP5开发,但我感觉到PHP4将继续被我们使用相当长的一段时间,而且现有的公开发布的项目也将继续支持PHP4。所以,本 书对两种版本的PHP提供相同的支持。尽可能的提供了PHP4,PHP5两个版本的实例代码。在每一章里面,每一个代码块(在不同的PHP版本中有所改动 的)中都提供有相应的注释来暗示其改变,比如//php4和//php5。

参考书目和其他资源

这里有很多相关的参考书来帮助你更好的学习设计模式。设计模式的“圣经”(译者译:最好的书)是Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides(他的开创性作品经常被提及为“Gang of Four”简写为”GOF”,就是代表他们四个人)撰写的《设计模式:可重用的面对对象软件开发原理》。

 关于“设计模式”,下一个最有用的关于PHP WEB应用程序设计模式方面的书就是Martin Fowler出版的Patterns of Enterprise Application Architecture (译者译:企业应用程序体系结构模型)。与GOF的书包含了所有一般的设计模式相比,Fowler的这本书详细的介绍了许多专门用于开发web应用程序的 设计模式。

另外在很多网站上也提供了有关设计模式方面的丰富资源,一个特别典型的网站就是波特兰模型库(http://cz.com/por/)。

另外一个关于PHP设计模式的站点是phpPatterns,在线地址是http://www.phppatterns.com

感谢

我很感谢我得老板,在他那里,我的任务和责任允许我在这个我感兴趣的领域花费一部分时间,也感谢他给我提供知识和经验让我有信心写完这本书。

我的灵感,想法和经验的另外一个来源是SitePoint这个站点(http://www.sitepoint.com)的论坛。特别值得一提的,那些经 常上”Advanced PHP Forum”(译者译:PHP高级论坛)的投稿人都有着丰富的知识与经验,他们是我在网上发现的最慷慨大方的共享自己想法的团体。我也正是通过这些资源 (译者注:SitePoint站点)登陆了SimpleTest(http://simpletest.sf.net),WACT(http: //wact.sf.net)和其他许多我认为无价的PHP工程项目。在接下来的岁月里,我希望SitePoint能够继续成为PHP开发者的丰富资源 点。

没有PHP开发团队的贡献和重要的努力,这本书显然是不可能存在的。因为正是他们开发出如此好用、易学、通用而且非常适合开发WEB应用程序的语言。

最后,我还要感谢Marco Tabini 和php|architect的全体成员。这本杂志(译者注:php|architect)已经成为许多不同PHP主题的来源,而且这些主题都是专业的开发人员发布的。由Macro和公司主办的会议也是相当好的。

继续阅读:《PHP设计模式介绍》第一章 编程惯用法

本文链接:http://www.blueidea.com/tech/program/2008/5659.asp 

出处:phpchina
责任编辑:bluehearts

上一页 php设计模式介绍之导言 [1] 下一页

◎进入论坛网络编程版块参加讨论

相关文章 更多相关链接
php设计模式介绍之值对象模式
php设计模式介绍之编程惯用法
[php]实现页面GZIP压缩输出
[AS3]观察者模式(基本版)
PHP Token(令牌)设计
作者文章 更多作者文章
图标设计常犯的10种错误
圣诞节彩灯摄影作品
新浪博客、圈子模版设计大赛
方正推出徐静蕾字体
CrossOver 参展作品选
热门搜索:CSS Fireworks 设计比赛 网页制作 Dreamweaver Studio8 Flash
站点最新 站点最新列表
跟我去香港:The third Day
单件模式结合命令链模式
快乐狗原创动漫大赛
元素层叠级别及z-index剖析
CSS 浏览器的等宽空格
电影变形金刚概念画欣赏
疯狂的程序员 第三十五回
疯狂的程序员 第三十四回
疯狂的程序员 第三十三回
运用ASDoc工具
栏目最新 栏目最新列表
火星人的耳机
公司正式宣布创业失败
用corelDEAW 12打造唇膏
二行代码解决全部网页木马
一行代码解决iframe挂马
Photoshop制作星空爆炸效果
CorelDraw 12打造休闲裤
Firework如何画特殊的切角图形
Firework打造韩式风格的手提袋
flash实例:打造佛光效果
 
>> 分页 首页 前页 后页 尾页 页次:2/21个记录/页 转到 页 共2个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

本文现有 2 条评论 评分:- llllllllllllllllllll + 评分人数: 2 ,平均分: 3.00


xuye281 Publish at 2008-5-9 1:25:48 评分1
dofus kamas
bcinmaster Publish at 2008-4-10 21:39:41 评分5
这本书在哪里可以买得到呢?
您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
大师之路--Photoshop 完全解析
《超越CSS》新书上市
Don't Make Me Think 第2版
HTML与CSS入门经典(第7版)
《FLASH MX2004网站开发精粹》
《CSS入门经典》
《设计师谈网页设计思维》
作品集 更多内容

CCC 坦克宝贝 FW重度打造性感CG美女 30for杂志的一些页面 机票系统宣传 jordan战靴 nokia6020 动画人设-女孩