`
congfeng02
  • 浏览: 200499 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

十款PHP开发框架横向比较

阅读更多

十款PHP开发框架横向比较

  这篇文章已经有些日子了,现在因为自己的开发需要想选一款容易上手的PHP Framework,所以重新找了出来,看完以后顺便翻译了一下,由于原文是写于今年三月底,故而其中的很多框架的现状也发生了较大的变化,本篇译文也只是方便大家阅读,对于正在寻找这方面资料的读者做个参考,也给自己一个知识备份......

引子

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

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


概览

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

Framework Comparison Chart

Framework PHP4 PHP5 MVC1 Multiple DB's2 ORM3 DB Objects4 Templates5 Caching6 Validation7 Ajax8 Auth Module9 Modules10
Zend Framework - YES YES YES - YES - YES YES - - YES
CakePHP YES YES YES YES YES YES - YES YES YES YES -
Symfony Project - YES YES YES YES YES - YES YES YES YES -
Seagull Framework YES YES YES YES YES YES YES YES YES - YES YES
WACT YES YES YES YES - YES YES - YES - - -
Prado - YES - YES - - YES YES YES YES YES YES
PHP on TRAX - YES YES YES YES YES - - YES YES - -
ZooP Framework YES YES YES YES - YES YES YES YES YES YES YES
eZ Components - YES - YES - YES YES YES YES - - YES
CodeIgniter YES YES YES YES - YES YES YES YES - - YES


#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很有潜力,框架的基件它一应俱全,像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封装包。

当你实在是无法决定选择哪个框架的时候,你仍可以选择像大多数人那样: 自己动手。虽然耗时费力,但是乐趣无穷。

如果你有任何问题或留言,随时欢迎在下方的评论表单中留言,或者加入到PHPit论坛的讨论中来。同样,如果以上图标或文章有不当之处,敬请斧正。

  如开始所言,一部分框架已经有了长足的更新,而我最近比较倾向于symfony,它充实的文档令到上手非常方便,但是它的庞杂也令到开发小项目,甚至像我这样的个人迷你项目的过程有点得不偿失,也许CodeIgniter的简洁在这方面已经足够。

延伸阅读

分享到:
评论

相关推荐

    facebook 架构 php

    此外,Facebook还开发了如Flow(静态类型检查器)和Jest(测试框架)等工具,以提升前端开发效率和代码质量。 2. **PHP与HHVM**:Facebook早期大量使用PHP作为服务器端的主要编程语言,为了优化PHP的性能,Facebook...

    dreamweaver网站PHP开发MXP插件

    Allaire为ColdFusion开发的插件.mxp ASP生成HTML 1.2.0修正版.mxp ASP生成HTML插件.mxp ASP图片随机显示插件.mxp ASP无组件文件上传插件2.0版本.mxp Atomz.com的搜索插件.mxp Banner交换系统插件.mxp Chromeless ...

    PHP网站模板,网站源码,带PHP后台:简单宽屏商务网站模板_简单 宽屏 商务 单页 bootstrap 响应式.zip

    该压缩包文件包含的是一款基于PHP技术开发的网站模板,专为商务网站设计,具有简单、宽屏的特点,并且采用了Bootstrap框架实现响应式布局。在本文中,我们将深入探讨这款模板的关键技术和应用。 首先,PHP...

    店滴AI,AI数据的应用与挖掘,可以快速搭建基于人脸数据,软硬件交互场景业务的免费开源框架

    后台支持多种开发模式,php 混合开发,element-ui 的 vue 开发模式,纯 html 的传统开发都支持表单多样,除 yii 自身的表单组件,系统还对表单做了丰富,支持一句话配置万能表单。gii代码自动生成,包括扩展模块,...

    五子棋网页游戏PHP版 onWeb.zip

    【标题】"五子棋网页游戏PHP版 onWeb.zip"是一个基于PHP开发的在线五子棋游戏项目。这种游戏通常采用HTML、CSS和JavaScript作为前端技术,与后端的PHP服务器进行交互,实现用户对弈的功能。五子棋是一种简单但策略...

    PHP动态网站开发插件

    网站开发相关插件下载 声明:以下插件均搜集于网上,完全免费提供给所有网友使用。如想用于商业用途,请与插件开发者联系,以免引起不必要的法律纠纷。 Object 对象插件 Preload Images with Status Bar and ...

    PHP+ELasticsearch的操作

    在IT行业中,PHP和Elasticsearch的结合使用是常见的数据处理和搜索引擎构建方案。这篇文本将深入探讨如何在...在实践中,不断学习和掌握Elasticsearch的API以及ThinkPHP的框架特性,将有助于提升开发效率和应用性能。

    dreamweaver上PHP网站开发相关插件

    创建一个中间的框架总是居于浏览器窗口正中位置 Auto Copyright.mxp 插入一个自动更新时间的版权符号。 Marquee.mxp 插入一条滚动的文字,并且可以设置它滚动的方向。 Background that Fit.mxp 把一张图片作为...

    基于PHP的优客365网站导航开源版源码.zip

    优客365网站导航系统是一款基于PHP编程语言开发的开源网站导航软件。这款系统旨在帮助用户快速构建个性化、功能丰富的网站导航站点,为互联网用户提供便捷的网址查找服务。源码开源意味着开发者可以自由地查看、修改...

    IT Tools工具箱:开发人员在线工具集合系统源码完整版

    IT Tools工具箱是一款专为开发人员设计的在线工具集合系统,提供了一系列实用的开发辅助功能。这个源码完整版让开发者能够深入理解系统的内部运作机制,同时也为自定义和扩展功能提供了可能。以下是对该系统的一些...

    Laravel开发-l5-mpdf

    Laravel 5 是 Laravel 框架的一个版本,它提供了优雅的语法和强大的工具,使得开发过程更为高效。 1. **Laravel 框架简介** Laravel 是一个基于 PHP 的开源 Web 应用框架,遵循 MIT 许可证。它的设计灵感来源于 ...

    php+websocket聊天室

    Workerman则是一个纯PHP开发的高性能、高并发的PHP工作进程管理框架,也可以扩展出WebSocket服务。 以下是构建PHP + WebSocket聊天室涉及的关键知识点: 1. **WebSocket基础知识**:理解WebSocket的基本概念,包括...

    PHP生成PDF文件

    在IT行业中,PHP是一种广泛使用的服务器端脚本语言,尤其在网页开发中占据了重要的地位。当我们需要在PHP项目中生成PDF文件时,TCPDF库是一个非常实用的工具。TCPDF是一个开源的PHP类库,它允许开发者直接在服务器端...

    GatewayWorker-for-win.rar

    总的来说,GatewayWorker-for-win是Windows开发者进行PHP Socket开发的利器,它提供了完善的框架和工具,简化了开发流程,提高了开发效率,同时具备强大的性能和扩展性。通过深入学习和实践,开发者可以利用这个框架...

    jatoolsPrint web打印控件

    一款很好用的免费的web页面打印工具。 设置纸张类型,如A4、A3等 设置纸张方向(横向、纵向) ...支持extjs、jquery等前台开发框架 支持php、.net、j2ee等开发并台 服务器端支持 windows,linux,unix等.

    兄弟连lamp高级

    - **CakePHP**:遵循MVC架构模式的快速开发框架。 - **Symfony**:灵活且模块化的框架。 - **phpDevShell**:专注于企业级应用开发。 - **Zend Framework**:提供多种组件的框架。 - **QeePHP**:轻量级、高效的PHP...

    使用HTML5Canvas和PHPSwoole构建的五子棋小游戏客户端和服务端

    在本项目中,开发者利用HTML5的Canvas技术和PHP的Swoole框架,创建了一个实时的五子棋在线对战游戏。下面将详细讲解这个项目的实现原理、涉及的技术点以及其重要性。 首先,HTML5 Canvas是Web开发中的一个强大工具...

    Laravel开发-laravelmpdf

    在Laravel框架中,开发人员经常需要生成PDF文件来提供报表、合同或其他文档。`laravelmpdf`是一个流行的Laravel包,它使得在 Laravel 应用程序中使用 MPDF库来生成PDF变得简单易行。MPDF 是一个用于将HTML、CSS、...

    现代化家居响应式网站模板 php版 v1.0.zip

    现代化家居响应式网站模板php版v1.0是一款专为家居行业设计的、基于PHP语言开发的网页模板。响应式设计是该模板的核心特点,它能够根据用户设备的不同屏幕尺寸和分辨率自动调整布局,提供一致且优化的用户体验,无论...

Global site tag (gtag.js) - Google Analytics