主流PHP框架之间的比较

1、Zend Framework
优点:
(1)高度模块化灵活性 :大量应用PHP5 中面向对象的新特征:抽象类、异常、接口、SPL等;
(2)企业应用开发框架:严格遵循“针对接口编程”和“单一对象职责”原则;
(3)官方出品,自带许多library,框架本身使用很多设计模式来编写,架构优雅,执行效率中等;
(4) MVC设计,比较简洁,具有路由功能,配置文件比较强大(能够处理XML和php INI),各种 library 很强大,是所有PHP框架中各种功能最全面的,包括它不仅是一个框架,更是一个大类库(取代PEAR)--主要特色;
(5)能够直观的支持除数据库操作之 外的Model层(比 CodeIgniter 和 CakePHP 强),并且能够很轻易的使用Loader功能加载其他新增加的Class;
(6)Cache功能强大, 从前端Cache到后端Cache都支持,后端 Cache支持Memcache、APC、SQLite、文件等等方式;
(7) 数据库操作功能很强大,支持各种驱动(适配器);
(8)文档全,在国内社区较成熟,学习成本中等。

缺点:
(1)MVC功能完成比较弱,View层简单实现,无法很强大的控制前端页面;
(2)没有自动化脚本,全部需要手工创建;
(3)适合于大项目。

2、CakePHP
优点:
(1)类似于RoR的框架,包括设计方式和数据库操作的Active Record方式;
(2) 设计层面很优雅,没有自带多余的 library,所有的功能都是纯粹的框架,执行效率还不错;
(3) 数据库层的 hasOne, hasMany功能很强大,对于复杂业务处理比较合适,路由功能,配置功能还不错,自动构建脚手架(scaffold)很强大,适合中型应用,基本实现过 了MVC每一层,具有自动操作命令行脚本功能
(4) 文档比较全,在国内推广的比较成功,大部分都知道CakePHP,学习成本中等.

缺点:
(1) 把Model理解为数据库层操作,严重影响了除了数据库之外的操作能力;
(2) CakePHP的cache功能略显薄弱,配置功能稍嫌弱;
(3) CakePHP不适合大型应用,只适合中型应用,小型应用来说略微的学习成本高了点

3、 CodeIgniter
优点:
(1)简单就是美:设计模式简单,对象模式简单;
(2)配置简单:全部配置实用PHP脚本来配置,执行效率高;
(3)具有基本路由功能;
(4)具有初步的Layout功能,能制作一定程度的见面外观;
(5)数据库层封装的不错,有基本的MVC功能;
(6)快捷简单,执行效率高,框架简单,易上手,学习成本低;
(7)自带很多library,适合小型应用。

缺点:
(1)内部结构胶混乱,缺乏扩展能力。
(2) 把Model层简单的理解为数据库操作. 框架略显简单,只能够满足小型应用,略微不太能够满足中型应用需要.

4、 Symfony
优点:
(1) 完整实现了MVC三层,封装了所有东西,包括 $POST,$GET 数据,异常处理,调试功能,数据检测;
(2) 强大的缓存功能,自动加载Class(这个功能很爽),强大的语言支持;
(3) 具有很强大的view层操作,能够零碎 的包含单个多个文件;
(4) 非常强大的配置功能,使用yml配置能够控制所有框架和程序运行行为;
(5) 能够很随意的定义各种自己的class,并且 symfony能够自动加载(auto load)这些class,能够在程序中随意调用;
(6) 包含强大的多层级项目和应用管理:Project --> Application --> Module --> Action,能够满足一个项目下多个应用的需要,并且每层可以定义自己的类库,配置文件,layout;
(7) 非常强大的命令行操作功能,包括建立项目、建立 应用、建立模块、刷新缓存等

缺点:
(1) 使用了太多风格迥异的 开源项目来组合成框架;结构复杂难于学习;
(2)缓存功能无法控制, 每次开发调试总是缓存,需要执行 symfony cc,symfony rc来清除和重建缓存
(3) 解析模板和读取配置文件的过程,花费时间不少. 学习成本很高,并且国内没有成熟的社区和文档,连中文手册都没有

评价:
Symfony 绝对是企业级的框架,唯一能够貌似能够跟Java领域哪些强悍框架抗衡的东西;强悍的东西,自然学习复杂,但是相应的对项目开发也比较有帮助,自然是推荐 复杂的项目使用Symfony来处理,觉得是值得,后期的维护成本比较低,复用性很强。相应的如果使用Symfony的应该都是比较复杂的互联网项目,那 么相应的就要考虑关于数据库分布的问题,那么就需要抛弃Symfony自带的数据库操作层,需要自己定义,当然了,Symfony支持随意的构造 model层。

5、ThinkPHP

(1)ThinkPHP快速、借用了成熟的Java思想,但是实际使用过程中有些基本的CURD 的关联操作居然存在错误;
(2)ThinkPHP基于PHP5,充分利用了PHP5的特性;
(3)带有数据验证和自动填充功能,但是这个也束缚了ThinkPHP,导致不考虑添加自动统计字段等小功能.
(4)自动生成数据,不支持关联。

6、FleaPHP

(1)采用PHP开发(完全支持 PHP4和PHP5)的应用程序框架,为开发者创建自己的应用程序提供了必要的基础功能和辅助组件。
(2)它成熟、快速、功能丰富。但在一些细节上不如 ThinkPHP人性化。如url函数。在FleaPHP中url函数的前两个参数是控制器,动作名 ,而ThinkPHP恰好相反,因为只输入动作名的情况很多。而且数据库的操作上这种参数的安排也是没有ThinkPHP人性化。
(3)FleaPHP对数据的 操作很强大,居然可以操作中间表。FleaPHP的文档和示例极少,学习成本大。但是一上手之后就很简单了。
(4)FleaPHP框架的核心非常小,灵活配置可以组合出各种类型的基础架构。
(5)对于简单的脚本页面,FleaPHP不需要载入MVC模式,只需为应用程序提供业务逻辑和数据库服务。而对于复杂的应用程序,FleaPHP可以完成从MVC模式调用、访问控制、数据验证到文件上传、图片处理等各种各样的任务。
(6)FleaPHP作为一个完全国产的框架,具有完全中文化的文档、代码注释,并且在扩展功能上也注重考虑国内开发者的实际需求。因此相对于国外的各种框 架,FleaPHP更容易被国内开发者所接受。

总评:

以上数款框架,各有特色,而且都是开源项目,不过框架针对的项目不一 样,一般来说 CodeIngiter 比较适合小型项目,CakePHP和Zend Framework比较适合中型项目,Symfony比较适合大型重量级项目,在项目选型的时候,要充分考虑框架的可以定制性、扩展性,因为每个项目都无 法确定你是否会随着需求的变化进行改变。

相对来说,Zend Framework和Symfony应对变化的能力比较强,特别是能够随意定制model层的Class,能够非常方便增加自己业务或者数据处理类,我是 个人比较推荐在中大型项目中使用的框架。CodeIngiter和CakePHP在中小型项目中同样能够发挥重大作用,快速开发和原型构建,非常适合目标 不清晰的原型项目的开发。ThinkPHP框架是国内比较优秀的框架,功能强大,学习起来容易。其灵活设计秉承简单的理念。如果太注重效率就使用 FleaPHP。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值