关于奇矩互动奇矩互动招贤纳士奇矩互动优质虚拟主机Discuz!商业用户享有本站VIP服务LAMP环境配置手册(CentOS5.1)
发新话题
打印

值得研究的PHP主流FrameWork开发框架

值得研究的PHP主流FrameWork开发框架

对我们来说,最重要的一点就是能够大大提高开发效率,PHP作为web应用开发语言以来,已经受到全球范围内的广泛使用,各种资源也是相当丰富,我这几年也一直使用PHP来作为主要的web项目开发语言,期间逐渐的接触到了PHP的几个FrameWork,我目前知道的不错的有这么几个,其中大部分我都还只是了解皮毛,有空了一定要好好研究研究。
Zend FrameWork
这个东西应该PHP的牛淫多少都知道点,Zend是干啥的不用多说,所以他们弄的这个FrameWork自然不用怀疑,一定不会比别的差,Zend称这将是下一代的主流框架。
CachePHP
CakePHP 是一个比较容易上手的PHP FrameWork,他完全采用面向对象的方式开发,支持AJAX,对于中小型web项目来说,很有可能是首选,目前它的用户也不少,有在线社区支持,同时已经有了中文的Manual文档,需要的朋友可以找我拿,网上应该也可以Google到。不过CakePHP有个不好的地方,那就是Model类过分复杂,在大型应用中很难实现单元测试,会大大的影响到大型项目中后期的开发和项目重构。
Symfony
大概知道CakePHP的人也会同时知道Symfony,这个东西也采用了面向对象的方式,实现了快速开发支持和AJAX的支持,使用了庞大的 Creole 和 Propel 作为数据源层,数据库和SQL操作非常简单,如同操作对象一样,但是同样的却带来性能上面的不足。目前这个东西也是越做越复杂,封装的东西越来越细,有强烈的面向对象癖好:) ,它的文档也比较丰富,在线网站有社区支持,熟悉面向对象的朋友可以尝试一下。
PHPOnTrax
个人认为这个FrameWork不错,由于有成功的Rails作为基础,PHP on Trax是值得信任的,它基本上就是Ruby on Rails的php翻版,有不少人直接叫这个东西为 PHP on Rails。它对MVC框架的支持非常好。
Agavi
这个FrameWork我只是大概听说,没有太多了解,更多细节可以去它的官方网站上研究一下,有论坛支持。
web.framework
关于这个FrameWork在我的Blog里面曾经有过一篇它的文章介绍,就不在这里多说,大家可以从这个链接查看: 《基于MVC架构的PHP5 web.framework 》
iConnect
在目前的PHP框架中,iConnect是一个专为企业应用设计的FrameWork,这个东西在我的Blog上也有过文章说过,大家可以访问这里查看:《iConnect, 一个开源的PHP 5框架>
phpMVC
这个FrameWork比较有历史,它是基于Java的Struts 来实现的PHP框架,从功能和成熟度来讲都不错,熟悉Struts的朋友可以立即上手使用。
phpWact
这个框架不太熟悉,但是据说历史比较久远,它实现了很多企业级的开发模式,主要的设计思路是基于可持续的软件重构和单元测试,它基于 simple test 实现单元测试,企业应用可以尝试使用这个框架来实现。
Studs
从名字上你大概也就能猜出怎么回事了,不错,它就是Jakarta Struts结构移植过来的PHP开发框架,使用面向对象的开发结构和API,模拟了一个HTTP Servlet容器和使用了PHP服务页面引擎技术。
FleaPHP
FleaPHP 是值得国人高兴的一个FrameWork,因为他是一个我们国人自己开发的PHP FrameWork,FleaPHP 是一个采用 PHP 开发(完全支持 PHP4 和 PHP5)的应用程序框架,为开发者创建自己的应用程序提供了必要的基础功能和辅助组件。FleaPHP 的全名是 Fast-Lightweight-Extensible-Automatic PHP web application framework。FleaPHP 是一个遵循 BSD 协议发布的开放源代码应用程序开发框架。你可以免费获取 FleaPHP 框架,并应用到自己的开发工作中。与流行的 GPL 协议不同,FleaPHP 遵循的 BSD 协议不要求开发者将基于 FleaPHP 框架开发的应用程序公布于众。这很好的保护了开发者及其所属企业的利益。更进一步,即便你基于 FleaPHP 实现了自己的产品或者对 FleaPHP 进行了修改以满足自己的需求。你仍然不需要公布你的劳动成果。
  目前我知道的就这几个PHP的框架,实际上他们都各有所长,我们完全没有必要全部都去深入的搞明白每一个,并且熟练驾驭他们,我们只需要根据个人的习惯、喜好选择一个适合自己的,然后深入的研究它、应用它,进而大大的提高自己的开发效率和产品质量。

TOP

收集整理了一些主要的PHP开发框架和CMS系统平台,在此一并作个总结,或许以后会有补充。

开发框架
WACT http://wact.sourceforge.net/
老牌的PHP编程框架,实现了很多企业级的开发模式

Horde http://www.horde.org/horde/
提供了一些常用类库,可以满足参数处理、数据压缩、浏览器检测、链接跟踪以及 MIME。需要PEAR类库的支持,提供了API参考。

Seagull http://seagull.phpkitchen.com/
一个面向对象的PHP开发框架,使用了Pear类库,其主要特性有:运用组件方式、简化数据访问、错误处理机制和权限认证管理等。

studs http://mojavelinux.com/projects/studs/
Jakarta Struts结构移植过来的PHP开发框架,使用面向对象的开发结构和API,模拟了一个HTTP Servlet容器
和使用了PHP服务页面引擎技术

InterJinn http://www.interjinn.com/
有很多扩展模块提供下载,可惜配置文件使用的是inc格式

Php.MVC http://www.phpmvc.net/
知名的PHP开发框架 ,基于Java的Struts

Phrame http://phrame.sourceforge.net/
虽然不大,但用的很多,也是基于Struts思想

Ambivalence http://amb.sourceforge.net/
基于Maverick思想实现的PHP开发框架

binarycloud http://www.binarycloud.com/
使用了Smarty模板引擎,文档很完善

Prado http://www.xisc.com/
Zend获奖作品,基于事件驱动的PHP开发框架

rwfphp http://www.rwfphp.org/
面向对象和事件驱动的php开发框架

Krysalis http://www.kompletecms.com/
把XML文档转换为XHTML文档的PHP系统

FastFrame http://codejanitor.com/wp/apps/fastframe/
可以快速地实现表单提交

Blueshoes http://www.blueshoes.net/
比较先进的一个framework,提供了很多GUI组件

下面这些我也没有详细看
Cgiapp http://weierophinney.net/matthew/download
Fuselogic http://www.haltebis.com/index/wakka/main/FuseLogic
Copix http://copix.aston.fr/
logicreate http://www.logicreate.com/
booby http://www.nauta.be/booby/

主要的CMS系统
Drupal http://www.drupal.org/
Mambo http://www.mamboportal.com/
Nucleus http://nucleuscms.org/
Midgard http://www.midgard-project.org/
Pmachine http://www.pmachine.com/
PostNuke http://www.post-nuke.net/
sitellite http://www.sitellite.org/
eZPublish http://ez.no/
limb http://limb-project.com/

TOP

  随着Ruby on Rails的火爆,PHP这个流行的Web应用脚本语言也出现了大量的新一代开发框架。与此同时,国内PHP开发者也开始紧跟国外发展,推出了不同的开发框架。
Ruby on Rails催生变革

  在RoR流行之前,PHP领域也有不少开发框架,例如Mojavi、WACT、PHPMvc和Seagull等。这些框架虽然也采用了MVC模式、数据库抽象层等技术。但由于当时PHP本身不像现在这样流行,所以这些框架都没有得到大量应用,最终归于沉寂。
  而在感受到RoR提供的快速开发能力后,PHP社区像被注入了兴奋剂。各种应用技术和开发框架层出不穷。
新一代框架的诞生

  PHP社区在被RoR震晕后,没有陷入过多的争论。而是立即行动起来,开始了新一代框架的设计。首先出现的第一批框架几乎都是RoR的克隆。例如PHP on Trax(连名字都借鉴Ruby on Rails)和TaniPHP、Akelos等。这些框架最大的特点就是力求100%克隆RoR,不管是采用的架构、设计模式,还是使用方法。
  这几个框架一开始确实吸引了开发者的注意,但随着开发者的深入了解,这些框架头上的光环逐步褪色。晦涩难懂的架构、糟糕的性能,以及太多的限制,让这些框架难以在实际项目中运用。
  此时,许多PHP开发者认为可以借鉴RoR的设计思想,但不应照搬RoR的结构和实现。为此,一些同样推崇快速开发的框架开始在PHP社区出现。这些框架中,CakePHP和Symfony可谓佼佼者。

CakePHP(http://www.cakephp.org/
  CakePHP充满了RoR的影子,从ActiveRecord模式到视图的布局管理都和RoR非常相似。而且CakePHP一开始也尝试实现与 RoR一样的许多东西。但CakePHP的开发团队后来发现PHP语言和Ruby语言存在巨大区别,因此RoR中的许多设计即便能够在PHP中实现,也是缺乏实用价值的。
  CakePHP在发展中逐步走出了RoR的阴影,开始探索更能发挥PHP语言本身优势的架构和实现。因此有一段时间CakePHP的API发生了剧烈的变化,以致其他开发者纷纷停下脚步处于观望状态。
  但由于前期一些架构的不合理和对RoR太多的模仿,导致CakePHP的核心部分越来越难以理解,运行性能也不尽人意。而且CakePHP将一个庞大的数据库操作对象作为所有业务对象的基础。这虽然利于快速开发,但却导致对业务逻辑对象的测试非常困难。
  对于较小型的项目,CakePHP非常理想。出色的快速开发能力、丰富的API和详尽的文档都可以帮助开发者很快完成工作。但随着项目规模的增加,CakePHP的局限性也变得突出。

Symfony(http://www.symfony-project.com/
   Symfony是一个非常成熟的框架,大量利用了已有的开源项目。Symfony使用Mojavi的核心代码实现了框架的MVC模式,利用 Propel作为数据库抽象层。Symfony不仅功能强大,而且对Ajax有全面的支持。加上官方网站提供的大量文档和教程,并拥有一个活跃的社区,因此受到许多开发者的欢迎。
  但是,Symfony最大的问题也在于使用了太多风格迥异的开源项目来组合成框架。由于Mojavi和Propel本身都相当复杂,因此Symfony的结构非常复杂,难以理解和学习。
  不过对于希望选择一个框架作为企业内部系统基础架构的企业来说,Symfony的成熟度、丰富的文档和活跃的社区都是值得考虑的。毕竟企业内部系统更为看重的是稳定性和长期的支持。
商业利益与大道至简

  看到PHP开发框架的潜在商业价值后,Zend.com联合IBM宣布将要推出一个真正能够发挥PHP优势的开发框架。一时间,这个消息在整个PHP社区引起了地震。大家都开始期盼这个具有“官方”背景的开发框架能够为PHP开发者指出一条正确的道路。
  不过世事难测,就在Zend Framework团队公布几个代码片断后,立即就有开发者指出这些代码片段是不可能实现的。事实证明这些代码片段不过是美好的理想。限于PHP语言本身的能力,Zend Framework最终没有实现当初承诺提供的类似RoR中ActiveRecord模式的实现品。

Zend Framework(http://framework.zend.com/
  Zend Framework大量应用了PHP5中面向对象的新特征:接口、异常、抽象类、SPL等等。这些东西的应用让Zend Framework具有高度的模块化和灵活性。同时,因为严格遵循“针对接口编程”和“单一对象职责”等原则,让Zend Framework很有希望成为一个出色的企业应用开发框架。
  但不幸的是Zend Framework直到今天,也没有做出更多的突破。在使用Zend Framework开发时,框架对应用程序自身最重要的领域逻辑分离没有提供任何帮助。如果希望开发出真正健壮的企业应用,仍然需要开发者做出相当的努力,并且在Zend Framework之上建造自己的基础设施。
  针对这点,批评者指出Zend Framework虽然大量应用PHP5的新特征,但却没有将这些相对于PHP4的优势转化为能够为开发者提供帮助的东西。

  对于简单和小型的项目来说,Zend Framework不但不能提高开发效率。反而因为在框架中应用了大量面向对象设计和PHP5的新特征,对开发者提出了更高的要求,间接增加了项目的开发成本。而对于较大的项目和企业应用,Zend Framework倒是一个不错的基础。但要创建一个成功的应用,仍然需要付出不小的努力。并且要时刻注意Zend Framewok的性能问题。

Code Igniter(http://www.codeigniter.com/
  Code Igniter可以说是一匹黑马。Code Igniter出现之时正是Symfony和CakePHP大行其道、Zend Framework万众期待的时刻。可凭借着独特的设计思想,Code Igniter吸引了大批开发者。这点从其火爆的官方论坛就可得到证实。
  Code Igniter推崇“简单就是美”这一原则。没有花哨的设计模式、没有华丽的对象结构,一切都是那么简单。几行代码就能开始运行,再加几行代码就可以进行输出。大部分日常开发中用到的东西都可以立即找到,并且可以很容易的使用。Code Igniter可谓是“大道至简”的典范。
  但是,Code Igniter本身的实现不太理想。内部结构过于混乱,虽然简单易用,但缺乏扩展能力。因此在发展到1.5系列版本时,作者不得不通过增加各种hooks来为框架提供扩展能力。
国内PHP开发框架

  国内虽然过去也曾有开发者发布过一些框架,但这些框架要么太过简单,要么和某一类型的应用紧密耦合,缺乏通用性。直到进入2006年,随着PHP在国内的大量应用和追捧,真正的国产PHP开发框架才陆续发布。

FCS(http://fcs.org.cn/
  FCS是从Java的Struts结构移植过来的中文PHP开发框架,使用面向对象的开发结构和MVC模式,并且模拟实现了Struts的标签库,借鉴了国外一些不错的思想,尤其是Java框架方面,因此熟悉Java的开发人员相对比较容易上手,其模版引擎、缓存机制、认证机制和扩展性方面均表现不凡。
  在借鉴国外优秀思想的同时,FCS也更多地考虑了国内的应用开发需要。PHP4兼容、完全支持UTF-8,以及PATHINFO支持等,更加有利于国内的主机环境和开发需要。秉着易用和易扩展的原则,FCS采用容易理解的项目、模块和操作机制加上内置的一些自动化操作方法,让应用开发变得更加简单,其功能可以通过基类库以及各种插件的形式灵活扩展,从而满足日益增长的业务需求。正是因为具备良好的开发结构,使得FCS在开发大型应用的时候并不会显得有很多障碍,基于构件的方式,以及配合框架的项目管理机制同样可以让你在处理大型应用的时候一展所长。
  FCS力求精简的代码和全中文化的文档、注释,有利于国内PHP开发人员学习和掌握,不过根据目前的情况来看,官方的文档和社区支持目前还比较缺乏,而且对Ajax的支持还不够全面,因此国内的应用成熟度还不够。

FleaPHP(http://www.fleaphp.org/
  FleaPHP从发展上看,是一个具有一定历史的框架。在过去三年中,FleaPHP是作者发布了从PFC1到PFC3系列和flea1试验框架后,推出的第一个真正成熟、稳定的开发框架。
  与许多其他框架不同,FleaPHP设计之初,就是围绕快速开发和充分利用PHP自身优势两个重点展开的。因此FleaPHP最大的特点就是极高的模块化程度和扩展能力。
  FleaPHP框架的核心非常小,但通过灵活的配置,可以组合出各种类型的基础架构。对于简单的脚本页面,FleaPHP不需要载入MVC模式,只需要为应用程序提供业务逻辑和数据库服务。而对于复杂的应用程序,FleaPHP可以完成从MVC模式调用、访问控制、数据验证到文件上传、图片处理等各种各样的任务。
  正是因为这种出色的定制和扩展能力,FleaPHP真正接近了“满足从简单应用到企业开发的各种需求”这个目标。而且与许多其他框架不同, FleaPHP是一个完全在实际开发中精炼出来的框架。因此伴随着FleaPHP的发展,各种各样的实际应用也相继出现。在FleaPHP官方网站上,可以看到各种各样的实际应用。从最简单的企业宣传网站,到复杂的社区网站、企业内部系统等等,不一而足。

  FleaPHP作为一个完全国产的框架,具有完全中文化的文档、代码注释,并且在扩展功能上也注重考虑国内开发者的实际需求。因此相对于国外的各种框架,FleaPHP更容易被国内开发者所接受。
  但是,也正因为处在国内,FleaPHP面临比国外同行多得多的困难。缺乏足够的贡献者、无礼的责难,以及充满怀疑的眼光,这些都让FleaPHP的开发团队成员需要更多的奉献精神。而且由于缺乏足够的贡献者,FleaPHP框架目前在文档和扩展功能方面,与其他成熟框架相比还有不小的差距。
  并且与其他所有的PHP开发框架一样,FleaPHP也没有找到帮助开发者分离应用程序领域逻辑的途径。虽然有指导文档,但对于初级开发者来说,一个可以拿来就用的领域逻辑基础会显得很实用。
反思与进取

  RoR带来的冲击波还远为平息,但PHP开发者们已经在开始反思一味追随RoR的脚步是否真的能够为PHP开发带来质变?
  RoR之所以能够取得如此巨大的成功,除了RoR本身的设计思想外,还有一个重要原因就是RoR充分利用了Ruby这种语言的特长。将Ruby动态语言的优势发挥得淋漓尽致。而在PHP中如果只是单纯照搬RoR中设计,则要处处遇到PHP语言本身的限制。为了绕开这些限制,开发者不得不用一些难以理解的技巧来解决问题。但这样一来通常会导致框架的结构变得晦涩难懂、性能受到损害。
  在这种反思中,Code Igniter、FleaPHP等框架就是对这个问题的最好回答。只有充分利用PHP语言本身的优势,才能真正让PHP开发变得更简单、更有趣。

  发展到今天,各种PHP开发框架虽然具有各自的特色,但几乎都是为了提高开发效率而努力。但是,虽然其中部分框架注意到了提高应用程序可维护性的问题,但都没有为领域逻辑分离这个至关重要的问题提出解决方案。而这正是这些框架在未来的发展目标。
  对于简单的Web应用和复杂的企业应用,两者之间的差别就注定了采用一种固定的架构是无法满足需求的。因此像FleaPHP这样能够提供自定义架构能力的框架,可以让开发者尝试用一个框架的不同组合来解决从简单到复杂的不同程度的需求。

  未来,PHP将成为Web开发领域中越来越重要的平台。因此我们相信会出现更多更好的开发框架。虽然作为开发者来说,并不一定需要采用某一个框架来解决问题。但正是因为这些不断出现的框架,我们对使用PHP开发Web应用的理解和把握得到了一次次的推动。
  

TOP

比较国内的三个开源 PHP 框架

放眼国内,除了 FleaPHP,还有 FCS 和 Diggmore 这两个公开并且在持续发展的框架。以我个人对这三个框架的了解,从各方面的比较了一下:

    * 从开发力量上看,FCS 和 FleaPHP 一样,目前都是由创始人独立发展,而 Diggmore 则由 phpe.net 的开发小组维护。
    * 从开放程度上看,FCS 和 FleaPHP 做得好一些。Diggmore 没有提供专门的网站来发布进展和反馈信息。
    * 从成熟度上看,FleaPHP 是最高的,因为已经用到许多项目中了,而 FCS 目前还没看到有公开的项目。Diggmore 则是新版 phpmore.com 采用的开发框架。
    * 从文档化程度上看,FleaPHP 和 FCS 持平,但 FleaPHP 的文档比 FCS 的文档更详细。而 Diggmore 貌似还没有看到专门的文档。
    * 从项目开发环境看,FleaPHP 和 Diggmore 都提供了 SVN 仓库,但两者都没有公开 Bug 跟踪系统。而 FCS 目前还没有开放的 SVN 仓库。
    * 从版本发布情况上看,FleaPHP 已经有了比较稳定的发布规律,FCS 的新版目前还在内部测试,而 Diggmore 没有提供公开发布渠道,只能从 SVN 仓库获取最新的代码。

将上面的比较结果做成图表,如下:

在这里,我要强调一下。我并没有比较三个项目在技术实现上的差异,因为这个问题是见仁见智,而且很难量化。所以我对一些可以直观看到的地方进行了比较。比较结果只是基于我个人的了解。虽然我尽量做到客观,但显然是不可能绝对客观的。

TOP

ThinkPHP是一个开源的PHP框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,并且遵循 Apache2开源协议发布。早期的思想架构来源于Struts,后来经过不断改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的Action和Dao思想和JSP的TagLib(标签库)、RoR的ORM映射和ActiveRecord模式,封装了CURD和一些常用操作,单一入口模式等,在模版引擎、缓存机制、认证机制和扩展性方面均有独特的表现,也已经越来越多地受到国内PHP开发人员的认可。

使用ThinkPHP,你可以更方便和快捷的开发和部署应用,当然不仅仅是企业级应用,任何PHP应用开发都可以从ThinkPHP的简单、兼容和快速的特性中受益。简洁、快速和实用是ThinkPHP发展秉承的宗旨,为此ThinkPHP会不断吸收和融入更好的技术以保证其新鲜和活力,提供WEB应用开发的最佳实践!
作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注您的业务逻辑。

TOP

发新话题