php5问世已经好几年了,我的php历程是从php4开始的,之前的版本没经历过。php5在面向对象、异常处理方面做了若干改进(php5OOP参考),也使得php更像java了,搞得我有时候都迷茫了,到底是在写些什么乱七八糟的东西?

  php对我来说最大的吸引力是其简单易用和处理速度,然则现在国内出现了可以说是规模庞大的框架之争和面向对象之争。FleapPHP的作者很NB的说,你不用框架是因为你不愿意接受新事物,呵呵,我很欣赏自己的一句话,php框架是用来研究的,不是用来应用的,如果真的要用框架,我也就不是php的fans了,改行去搞MS的东西吧。

  1、不得不提的几个框架

  首先便是ZendFramework了。其实ZF不像是个框架,它更多的是一个类库。它的库与库之间是松散耦合的,也就是说,你要什么就去加载什么吧,无需考虑还有什么规则,而真正的框架则应该有自己的应用部署规则和执行流程规则,ZF没有。我每学习一个php的产品或应用,首先便查看其代码约定,ZF给我的感觉是很优美,呵呵值得学习,但是,省着点用,我不想自找麻烦。

  其次要介绍的一个框架是CodeIgniter,这是EllisLab的产品,小巧,优美,大多数代码从他的另一个产品ExpressEngine借鉴过来,都是了不起的东西,但是怎么说呢,数据库类设计有些缺陷,各个类之间的衔接比较紧密,改动起来不是很方便。我现在写出来的东西很多都深受其影响,但终究还是没有能够利用这套框架开发一个完整的应用。我的观点是,改动太多了,还不如自己写一个,就好比我会花精力来写自己的Blog程序一样。

  国内很多框架冒出来了,作者都很NB,但是应用少的可怜,要么就是很简单,而且没什么讲究的应用。其实一个好的产品最有说服力的地方就是其应用的广度。WordPress的代码真的是烂的没得说,但是其设计思想也是优美的没得说。至于其他框架,我没什么发言权,太累了,没这个精力每个都过一遍。

  2、php的面向对象带给了我们什么

  效率,我追求的是效率。面向对象最大的优势是鼓励封装,结结实实的打包,然后稳定的运作。然而,纯粹的面向对象编程会带来庞大的对象群,从而也带来了极低的运行效率……能做的就是提升你的硬件,加固你的服务器,当然,如果你的应用规模不需要考虑这些,那就放心的去OOP吧。

  为什么OOP会带来这种结果?首先是增加了复杂程度,其次是增加了太多不必要的消耗……例如,以前你加载一个类文件可以采用下面的方式:

require 'xxx.class.php';
$xxx = new Xxx;

  很多的框架采用下面的方式(包括joomla):

import('xxx.class');
loadClass('xxx.class');

  似乎代码简洁了许多,实则不然,小小一个import,期间经历了文件夹查找,文件存在性检查,实例存在检查等等操作,这就是做作+强奸。

  3、工具和设计理念,哪个重要

  程序设计语言终究只是工具,如果真的想全部面向对象,放弃php吧,它受够了。当然,适当的OOP+面向过程,结合是完美的,也是高效的。我仍然热爱可爱的php。追根到底,设计理念才是第一位的。

  4、拼命坚持吧

  以上只是我的心得体会,我也在维护着自己的代码库,我追求的是执行效率,而不是造几个小积木,让后拼出各种花样来完。呵呵,因为咱们缺乏创造性,不适合“天下网站一大抄”的中国基本国情。