您的位置:首页 > 编程语言 > PHP开发

带你横向比较10款PHP开发框架

2013-10-08 13:39 330 查看
引子

PHP开发框架近来在PHP社区中成为讨论的热点,几乎每天都在推出新的框架。面对市面上超过四十种的开发框架,你很难判断究竟哪一款最适合你,尤其是在这些框架所提供的功能不尽相同的时候。

本文将引导你遍览十款最热门最流行的开发框架,并对它们作出横向比对。我会先列出一张所有框架的一览表,而后我们将对它们逐个简述。

概览

以下你看到是这十款开发框架的一览表,列举了他们各自所提供的功能。

Framework Comparison Chart

Framework PHP4 PHP5 MVC1 Multiple DB's2 ORM3 DB Objects4 Templates5 Caching6 Validation7 Ajax8 Auth Module9 Modules10

Zend Framework - - - - -

CakePHP - -

Symfony Project - - -

Seagull Framework -

WACT - - - - -

Prado - - - -

PHP on TRAX - - - - -

ZooP Framework -

eZ Components - - - - -

CodeIgniter - - -

#1: Indicates whether the framework comes with inbuilt support for a Model-View-Controller setup.

#2: Indicates whether the framework supports multiple databases without having to change anything.

#3: Indicates whether the framework supports an object-record mapper, usually an implementation of ActiveRecord.

#4: Indicates whether the framework includes other database objects, like a TableGateWay.

#5: Indicates whether the framework has an inbuilt template engine.

#6: Indicates whether the framework includes a caching object or some way other way of caching.

#7: Indicates whether the framework has an inbuilt validation or filtering component.

#8: Indicates whether the framework comes with inbuilt support for Ajax.

#9: Indicates whether the framework has an inbuilt module for handling user authentication.

#10: Indicates whether the framework has other modules, like an RSS feed parser, PDF module or anything else (useful).

#1: 表示框架是否内建模型-视图-控制器。

#2: 表示框架是否无需修改即可支持多数据库。

#3: 表示框架是否支持对象记录映射器,通常这是ActiveRecord的封装包。

#4: 表示框架是否包含其它数据库对象,比如TableGateWay。

#5: 表示框架是否内建模板引擎。

#6: 表示框架是否缓存对象或者其他缓存机制。

#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很有礸ˤں迷你项目的过程有点得不偿失,也许CodeIgniter的简洁在这方面已经足够。

延伸阅读

•Framework Performance: 一篇谈及开发框架执行效率的文章,总觉得口水仗永远打不完

•Top 10 PHP MVC frameworks: 这里又评了个十大~~~

•MVC Frameworks Written in PHP: 这里就不评了,全部罗列出来了

•How would you say Symfony compares to CakePHP and qcodo: askeet是symfony的一个演示项目,在这上面出现这样一篇文章也蛮有趣的

本文出自 “清源教育” 博客,转载请注明此处,谢谢!更多php技术问题欢迎加群探讨:256271784,验证码:csl,不写验证不予通过哟~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: