频道栏目
读书频道 > web开发 > php > PHP核心技术与最佳实践
2.3 面向对象的思考
2012-12-03 13:47:03     我来说两句
收藏   我要投稿

本文所属图书 > PHP核心技术与最佳实践

这是一本致力于为希望成为中高级PHP程序员的读者提供高效而有针对性指导的经典著作。本书系统归纳和深刻解读了PHP开发中的编程思想、底层原理、核心技术、开发技巧、编码规范和最佳实践。 全书分为5个部分:第一...  立即去当当网订购

PHP的特色是简单、快速、适用。在PHP的世界里,一切以解决问题为主,所以很多设计方面的东西往往被忽视或排斥。虽然PHP的面向对象提出很多年了,但一直被排斥,很多人提倡原生态开发方式,甚至有人提倡彻底面向过程。伴随着对OO的质疑,PHP框架一方面如雨后春笋般遍地开花,另一方面一直受到抵制和质疑。

有一点是肯定的,PHP不是一门很好的面向对象的语言,因为其无法做到完全面向对象,也无法优雅实现面向对象。所以现在比较流行的还是以类为主的开放方式,即抛弃或精简经典的MVC理论,很少用和几乎不用设计模式,以类加代码模块的方式进行代码组织。这种开发方式在PHP的开源项目里是最流行的,也是最适合二次开发的,而比较纯的面向对象的产品有Zend Framework。这类产品入门的门槛比较高,代码看似“臃肿”,开发成本比较高,这类产品一般比较少见,市场占有率也比较低。

所有产品最终都是为市场服务的,PHP面向的是Web开发市场,所以并不需要高端的、复杂的设计和开发技巧。但是前面讲的那些并不是没有作用。

一些基本理论,在任何一门语言里都有共性。语法和函数库只是学好一门语言的必要条件,而不是充要条件。语法和函式只是表层的东西。只要掌握面向对象的思想,即使没有一点Java和.NET基础,也能看懂用它们写成的代码。

PHP只是一个脚本语言、一门工具而已。在Web开发中,PHP语言自身所占的分量越来越低,但却涉及程序设计的方方面面,而面向对象只是其中之一,也是最主要的一个方面。PHP是一种经典思想,能实现低耦合、易扩展的代码,其可用最经济的方式干一件事。

理论是重要的,但是理论也不是一成不变的。比如我们提到的一些设计模式,也没必要完全遵守,可以做一些精简和变形。

基于以上思考,我们认为在PHP的开发中应该灵活使用面向对象的特性和设计原则。

对于流程明确、需求清晰、需求变更风险小的业务逻辑,过程化开发(传统软件开发模式)最适合,这就像解一道数学题,总需要一步步去解,上一步的结果作为下一步的条件。这个时候,面向过程的开发更符合人的思维。

但是对于流程复杂、需求不完善、存在很大需求变更风险的业务逻辑,此时用过程化开发将使程序变得非常的繁琐臃肿,实现难度很大,并且后期的维护代价高得惊人。此时,抽象思维将是最适合的,用面向对象的思维去抽象业务模型并随需求不断精化,最终交付使用,其扩展度和可维护性都要比过程化方法更好。

由于面向对象是更高一层的抽象,它有一些优点较之面向过程是比较突出的:

其一,新成员的加入和融合不再困难,高度抽象有利于高度总结。

其二,代码即文档,团队中的任何人都可以轻松地获得产品各个模块的基本信息,而不再需要通读大部分代码。

说到这里,可能就会有人有疑问了:本书一直在推崇面向对象的开发模式,说面向对象的好,说OO适合复杂的项目,那Linux这种复杂的项目,使用面向过程的C语言编写的,这又如何解释?

这个问题问得好,现解释如下:

其一,Linux虽然是用面向过程的C语言编写的,但是Linux的操作系统是使用内核+模块的方式构建的,这种模块化的思想是所有编程范式中的普适原则。

其二,面向对象和各种设计模式就是已经提供好的模式,使用已有的模式本比像Linux那样自己摸索出一个模式更方便快捷,开发成本更低,代码更易阅读

其实,面向过程也好,面向对象也好,目的只有两个:一个是功能实现,一个是代码维护和扩展。只要能做好这两点,那就是成功的。

PHP不是一门很好的OOPL,但却是一门很好的Web设计语言。我们有理由相信,在Web开发领域,PHP还将继续发挥其作用,以其简单、快速吸引更多的开发者加入。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:2.2 一个面向对象留言本的实例
下一篇:2.4 本章小结
相关文章
图文推荐
排行
热门
最新书评
文章
下载
读书
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站