PHP开发框架近来在PHP社区中成为讨论的热点,几乎天天都在推出新的框架。面对市面上超过四十种的开发框架,你很难判断究竟哪一款最适合你,尤为是在这些框架所提供的功能不尽相同的时候。数据库
本文将引导你遍览十款最热门最流行的开发框架,并对它们做出横向比对。我会先列出一张全部框架的一览表,然后咱们将对它们逐个简述。缓存
概览框架
如下你看到是这十款开发框架的一览表,列举了他们各自所提供的功能。函数
#1: 表示框架是否内建模型-视图-控制器。网站
#2: 表示框架是否无需修改便可支持多数据库。.net
#3: 表示框架是否支持对象记录映射器,一般这是ActiveRecord的封装包。symfony
#4: 表示框架是否包含其它数据库对象,好比TableGateWay。视频
#5: 表示框架是否内建模板引擎。对象
#6: 表示框架是否缓存对象或者其余缓存机制。blog
#7: 表示框架是否内建校验或过滤组件。
#8: 表示框架是否内建Ajax支持。
#9: 表示框架是否内建用户验证模块。
#10: 表示框架是否包含其余模块,例如RSS feed解析器、PDF模块或其余实用模块。
Zend Framework
Zend Framework还至关新,尚处在beta阶段(译者注: 相对于做者写这篇文章之时),所以还有些功能有待完整(比方说用户验证模块),但它自己已经有很多功能了。尽管从对比表上来看它没占到什么便宜,可Zend Framework确确实实涵括了一些处理PDF文档、RSS源、在线服务(Amazon, Flickr, Yahoo)的模块,甚至更多。Zend Framework同时也包含了数个不一样的数据库对象,极大地便捷了对数据库进行查询的实现,甚至免去你手写SQL查询脚本的麻烦。
当前,Zend Framework并未彻底支持ORM,可是开发人员仍然陷入在是否要添加ORM层的争论中。也许在未来会实现这些功能,你就能够编写本身的ORM封装包,投稿到社区,并有机会将之整合入框架的将来版本。
Zend Framework看上去前途一片光明,并且它同时又修正了一些常见的PHP问题。也许稳定版本就能够在对比表里面表现得更出色了!
CakePHP
CakePHP是一款高级的MVC框架,自带了很少的几个模块。它能够处理大多数的数据库事务,支持Ajax个数据验证。同时,它的用户验证模块(Accsee List)也很是独特,能够针对不一样的用户在访问网站不一样部分时分配对应的访问权限。
尽管CakePHP的网站看上去使人犯晕,可是框架自己已经比较完整可用了。截至成文还没有见稳定版本,实在使人感到有点意外,毕竟已经开发了好几个月了,不过我猜测也许用beta版原本开发产品也何尝不可吧(译者注: Risk you @ss baby!)。
Symfony Project
从对比表中不难看出,Symfony是一款极具扩展性的开发框架,它甚至完整植入了一个叫作Propel的ORM,Propel也是开源项目,而且迄今为止多是PHP上最好的ORM解决方案。Symfony同时还整合了用于数据库抽象层的Creole和用于MVC模型层的Mojavi。因为它仅仅是重用了这些项目的源代码,而非重写,由此使得框架具有了极为强大的扩展性,这一点在表中昭然如果。
Symfony有两个缺憾,以使它不支持PHP4,这是因为须要PHP5中不少新特性的支持的结果,二是相对来讲它有点复杂了。大多数任务,比方像分页,在Symfony中的时限比其余框架要复杂得多,这决不是一款简洁著称的框架。
Seagull Framework
Seagull framework看上去至关不错,自带了不少特性。支持PHP4也对它的推广至关有利,我本人就仍在使用PHP4,何况大多数空间寄存商还没有全面支持PHP5。
不幸的是,Seagull没有提供对Ajax的支持,实在有点说不过去,不过经过Google能够绝不费力地搜索到一篇本身添加Ajax支持的教程,并且这点在未来应该会添加到框架中。
WACT - Web Application Toolkit
WACT颇有潜力,框架的基件它包罗万象,像MVC、数据库对象和模板引擎,不过仅此而已。它没有任何外挂模块,同时也缺乏一些内建的功能,例如Ajax、缓存、验证模块,等等。
尽管如此,WACT仍是拥有最好的模板引擎,甚至能够帮助你建立本身的模板标签来扩展功能。
Prado
Prado很是独特,它提供了一些很酷的特性。它没有内建对MVC的支持(就我看来),可是它确实拥有处理大多数PHP任务的各类各样的组件,更棒的是,它实现了事件驱动脚本。例如,在一个HTML按钮上设置onClick事件连接到一个PHP函数。这点近似ASP.NET,而Prado确实包含了更多的ASP.NET组件,像GridView和Repeater Control。
仅凭对比表上的数据,Prado看似要弱于其它框架,但事实并不是如此。由于Prado如此独特,尽管它得分不高,可是在实际应用中它是很是强大的。
PHP on Trax
这个框架看上其简直就是Ruby and Rails在PHP上的一个接口,它之前也确实叫作PHP on Rails。不幸的是,它的文档实在是太稀缺了,因此也很难判断这个框架究竟提供了些什么,可是文档中的确提到了ActiveRecord,因此它可能提供ActiveRecord,就像RoR。还有就是它内建了Ajax支持,从它网站上的两个演示视频中不难看出。
PHP on Trax基本上能符合使用者对框架的要求,可是它仍是缺胳膊少腿,比方像验证模块和缓存模块。它也没有任何外挂模块,是以目前来讲,它很初级。
ZooP Framework
ZooP Framework能够说一应俱全,对比表上一目了然,差很少该支持的都支持了,除了ORM层。更意外惊喜的是它支持PHP4,这对于它提供的这么全面的功能来讲实在是太不简单了,太棒了!
ZooP还提供了内建的GUI控制,使得建立表单的工做变得异常快捷。它支持绝大多数的经常使用表单元素,在常规HTML里使用GUI控制的好处就是你能够将验证的逻辑操做和GUI控制紧密地结合在一块儿。
eZ Components
与其说ez Components是个框架,不如说是一个组件集,可能正是由于如此它并无内建对MVC的支持。
它包括了大多数经常使用组件,如数据库组件和缓存组件,可仍是缺乏点东西。比方说,没有ActiveRecord组件和验证组件。另外一方面,它提供了一些外挂组件,好比e-mail组件,可是很少,其它框架(像Zend Framework)提供的更多。
CodeIgniter
CodeIgniter相对来说是个很新的框架,它的做者是ExpressionEngine的开发团队(译者注: PHP blog程序pMachine的升级换代产品,很惋惜不是免费的),看上去颇有潜质。不幸的是,它尚不能处理多数据库,尽管这项功能仍在开发中。
它源于Ruby on Rails,因此它提供了不少的相同功能,好比scaffolding(代码自动生成)。它的文档编得至关棒,甚至还有视频教程帮助你快速上手。
获胜者是...
在这里我不得不很是遗憾地宣布,无人胜出。每一个框架所提供的功能特性不尽相同,所以无人完胜。一如往常,最后这将取决于我的偏好和选择。我极力推荐你在做出决定前先认真仔细地研读各个框架的文档,剩下就靠你本身判断了。
就我的而言,个人确很是喜欢Zend Framework,但当我仔细研究了每一个框架以后,我发现了不少有趣的功能,比方说Prado的事件,抑或Symfony的ORM封装包。
当你实在是没法决定选择哪一个框架的时候,你仍能够选择像大多数人那样: 本身动手。虽然耗时费力,可是乐趣无穷。
如开始所言,一部分框架已经有了长足的更新,而我最近比较倾向于symfony,它充实的文档令到上手很是方便,可是它的庞杂也令到开发小项目,甚至像我这样的我的迷你项目的过程有点得不偿失,也许CodeIgniter的简洁在这方面已经足够。