3.4 常用PHP开发框架
随着互联网应用的发展,我们过去依靠原生PHP代码进行编程的路已经走不通了。因为,随着代码逻辑越来越复杂,如果没有一个好的框架来管理和组织代码,乱七八糟的巨量代码最终必将把整个项目毁掉,这也是我们在项目结束之后还要花那么大的资源和精力对代码进行不断优化和重构的原因。当然,如果我们在项目开始时就采用一个比较好的框架进行开发,不仅可以让以后的功能扩充变得更加简单,还可以为日后的代码维护减少工作量。目前市面上流行的PHP框架非常多,接下来我们会对其中比较有代表性的几个框架做一些介绍和对比。
- Zend Framework(http://framework.zend.com/)
Zend Framework简称ZF,是PHP的官方框架,优点是功能强大、结构松散、封装完善,很适合作为二次开发的基础框架,它包含了几乎所有你能想到的关于互联网方面的功能类库。当然,ZF的类库包也很大,框架类库就将近20MB,当然其中大部分我们是用不到的。虽然ZF看起来比较“笨重”,但是它所提供给开发者的自由度是其他框架所不能比较的,针对那些需求比较灵活或者结构比较复杂的大型项目而言,ZF确实不失为一个很好的选择。
笔者建议大家去深入学习ZF框架,最好是能把ZF的主要逻辑和类库的代码读一遍,因为从中你不仅可以学到很多PHP语言的编程技巧,还可以学到很多有用的“设计模式”以及“封装”的技巧,这些知识和经验都会对大家今后的编程之路大有裨益。
此外,本书实战篇中的项目实例将会使用一个基于ZF的框架Hush Framework来进行开发,因此学习ZF对大家来说也是非常必要的。当然,由于本书的篇幅限制,我们不可能在这里把ZF全部给大家讲一遍,但是我们在3.6节中在对Hush Framework进行讲解时会涉及ZF框架的一些内容,建议大家认真阅读和体会,相信其中的知识会对深入学习ZF框架有很大帮助。
小贴士:本书的“封装”指的是一种基于面向对象思想的组织代码的方法,后面会多次提到这个概念,大家在阅读时可以注意一下。
- CodeIgniter(http://codeigniter.com)
CodeIgniter(CI)也是一个比较老牌的PHP框架,和ZF相反,它非常小巧,核心类库仅有1MB左右,使用起来比较简单,代码框架遵循常见的MVC结构;但是CI的类库封装得还不够精细,某些框架层次感觉设计得过于繁琐;另外,我认为CI的文档做得不是很好,特别是中文的文档,当然这可能是多种原因造成的,但是不可否认的是,这个问题大大阻碍了CI框架在国内的普及。 - CakePHP(http://cakephp.org/)
CakePHP是一个典型的仿RoR类型的框架,它的脚手架(scaffold)功能还不错,也非常的小巧,类库相对来说设计得主流化一点,但是模板支持部分还做得不够好,另外系统设计的耦合度比较高,如果遇到一些大型项目会有点棘手,比如需要分库分表,以CakePHP目前的做法会比较麻烦。 - ThinkPHP(http://www.thinkphp.cn/)
ThinkPHP是必须要介绍的,是近几年出现的比较优秀的产品之一。整体来说,ThinkPHP很快,几乎是所有PHP框架中最快的;也很小巧,所有的类包加起来才几百KB;在设计方面相对比较松散,易于学习;另外,文档也相当完善,确实是近年来出现的一个不错的PHP框架,但是面对大型项目同样有一些不方便的地方。
当然,面对如此多的PHP框架,到底应该学习哪一个呢?我们可以这样考虑:如果你只想快速地开发出一个应用,那么可以选择Think、Cake或者CI等敏捷型的开发框架;但是,如果你想要更深入地学习PHP语言,甚至PHP中的各种设计模式,请选择ZF。当然,在后面的章节中,我们将会向大家介绍一个基于ZF和Smarty的PHP开发框架,也就是Hush Framework。