ホームページ  >  記事  >  php教程  >  PHP 開発フレームワークの水平比較

PHP 開発フレームワークの水平比較

WBOY
WBOYオリジナル
2016-06-21 09:08:091193ブラウズ

比較|開発フレームワーク

はじめに

PHP 開発フレームワークは、最近 PHP コミュニティで話題になっており、ほぼ毎日新しいフレームワークがリリースされています。市場には 40 以上の開発フレームワークがあり、特にフレームワークによって提供される機能が異なる場合、どれが自分にとって最適であるかを判断するのは困難です。

この記事では、最も人気のある 10 の開発フレームワークを紹介し、それらを水平に比較します。まずすべてのフレームワークのリストから始めて、次に 1 つずつ簡単に説明します。


概要

以下に示すのは、これら 10 個の開発フレームワークのリストであり、それぞれが提供する機能をリストしています。

フレームワーク比較表

フレームワーク PHP4 PHP5 MVC1 複数の DB2 ORM3 DB オブジェクト4 テンプレート5 キャッシング6 検証7 アヤックス8 認証モジュール9 モジュール10
Zend フレームワーク - - - - -
ケーキPHP - -
Symfony プロジェクト - - -
カモメフレームワーク -
WACT - - - - -
プラド - - - -
TRAX 上の PHP - - - - -
ZooP フレームワーク -
eZコンポーネント - - - - -
コードイグナイター - - -

#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 と Rails on PHP のインターフェイスです。確かに以前は PHP on Rails と呼ばれていました。残念ながら、ドキュメントが非常に少ないため、フレームワークが何を提供するかを正確に伝えるのは困難ですが、ドキュメントには ActiveRecord について言及されているため、RoR のような ActiveRecord を提供する可能性があります。また、Ajax サポートも組み込まれており、Web サイト上の 2 つのデモ ビデオから簡単に確認できます。

Trax 上の PHP は基本的にフレームワークに対するユーザーの要件を満たすことができますが、検証モジュールやキャッシュ モジュールなどの手足がまだ不足しています。また、プラグイン モジュールも含まれていないため、現時点では非常に基本的なものです。


ZooP フレームワーク

ZooP フレームワークは包括的であると言えます。比較表から、ORM レイヤーを除いて、サポートされるべきほとんどすべてがサポートされていることは明らかです。さらに驚くべきことは、PHP4 がサポートされていることです。PHP4 が提供する包括的な機能の割には、これは非常に簡単ではありません。

ZooP には組み込みの GUI コントロールも用意されており、フォームの作成が非常に高速になります。通常の HTML で GUI コントロールを使用する利点は、検証ロジック操作を GUI コントロールと密接に組み合わせることができることです。


eZコンポーネント

ez コンポーネントはフレームワークというよりも、コンポーネントのセットであるため、MVC のサポートが組み込まれていません。

これには、データベース コンポーネントやキャッシュ コンポーネントなど、最も一般的なコンポーネントが含まれていますが、まだ欠けているものもあります。たとえば、ActiveRecord コンポーネントや検証コンポーネントはありません。一方、電子メール コンポーネントなどのいくつかのプラグイン コンポーネントは提供されますが、他のフレームワーク (Zend Framework など) ではそれ以上のプラグイン コンポーネントは提供されません。


コードイグナイター

CodeIgniter は比較的新しいフレームワークで、その作者は ExpressionEngine (翻訳者注: PHP ブログ プログラム pMachine のアップグレード製品。残念ながら無料ではありません) の開発チームであり、大きな可能性を秘めているようです。残念ながら、この機能はまだ開発中ですが、まだ複数のデータベースを処理できません。

Ruby on Rails を起源としているため、スキャフォールディング (自動コード生成) など、同じ機能の多くを提供します。ドキュメントは非常に充実しており、すぐに使い始めるのに役立つビデオチュートリアルもあります。


勝者は...

ここで、残念ながら誰も勝者がいないことを発表しなければなりません。各フレームワークは異なる機能を提供するため、完璧なフレームワークはありません。いつものように、最終的には個人の好みと選択になります。決定を下す前に各フレームワークのドキュメントを注意深く読むことを強くお勧めします。残りはご自身で判断してください。

個人的には Zend Framework がとても好きですが、各フレームワークを注意深く研究すると、Prado のイベントや Symfony の ORM パッケージなど、多くの興味深い機能を発見しました。

どのフレームワークを選択するか本当に決められない場合でも、ほとんどの人が行うこと、つまり自分で行うことを選択できます。時間と労力はかかりますが、無限に楽しいです。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。