著者: ヘイエルレン
ブログ: http://blog.csdn.net/heiyeshuwu
時間: 2008-5-5
最近、中国で使用されている主流の海外 PHP フレームワークをいくつか使ってみたので、直感的に感じたことを簡単に共有したいと思います。参考として。
主な参照フレームワークには、CodeIgniter、CakePHP、ZendFramework、および Symfony が含まれます。
注: 私は、多くのフレームワークを真剣に使用したことはありません。私の意見の多くは未熟であるか、間違っている可能性があります。私たちと一緒に成長していきましょう。 :-)
【CodeIgniter】
公式サイト: http://codeigniter.com
中国語の Web サイト: http://codeigniter.org.cn
中国語マニュアル: http://codeigniter.org.cn/user_guide
ビデオチュートリアル: http://codeigniter.org.cn/tutorials
テストバージョン: CodeIgniter_1.6.1
利点:
1. 構成がシンプルで、すべての構成が PHP スクリプトを使用して構成され、実行効率が高い。基本的なルーティング機能があり、ある程度のルーティングを実行でき、ある程度のインターフェイスの外観を作成できます。 ; データベース層は適切にカプセル化されており、基本的な MVC 機能を備えています。
2. 高速かつ簡潔、少ないコード、高い実行パフォーマンス、シンプルなフレームワーク、使いやすい、学習コストが低い、詳細なドキュメントが多数付属しており、シンプルで使いやすいライブラリがあり、フレームワークは小規模なアプリケーションに適しています
。短所:
1. モデル層をデータベース操作として単純に理解する
2. フレームワークはやや単純で、小規模なアプリケーションのニーズのみを満たすことができますが、中規模のアプリケーションのニーズを満たすことができません
。 評価:
一般に、CodeIgniter を使用してシンプルで高速なアプリケーションを完成させることは価値があります。同時に、ある程度のレイアウトを構築して、データ操作層が適切にカプセル化されており、CodeIgniter は多くの機能を使用しません。デザインパターンが複雑すぎるため、パフォーマンスとコードの可読性の両方が優れています。追加のライブラリに関しても、非常に優れており、シンプルで効率的です。
【CakePHP】
公式サイト: http://www.cakephp.org
中国語マニュアル: http://www.1x3x.net/cakephp
ビデオチュートリアル: http://search.you.video.sina.com.cn/s?key=cakephp
テストバージョン:cake_1.1.19.6305
利点:
1. CakePHP は、データベース操作の設計方法とアクティブ レコード方法を含め、RoR に最も似たフレームワークです。設計レベルは非常に洗練されており、追加のライブラリは付属せず、すべての機能は純粋なフレームワークであり、実行効率は優れています。悪くない; データベース層 hasOne および hasMany 機能は非常に強力で、複雑なビジネス処理に適しています。 自動スキャフォールディング (scaffold) は基本的には非常に強力です。 MVC の各層と自動操作コマンドライン スクリプト機能を備えています。
2. ドキュメントは比較的充実しており、ほとんどの人が CakePHP を知っています。
欠点:
1. CakePHP の非常に深刻な問題は、CakePHP がモデルをデータベース層の操作として理解していることです。これは、データベース以外の操作能力に重大な影響を与えます。
も
少し弱いです。CakePHP は大規模なアプリケーションには適していませんが、小規模なアプリケーションには学習コストが若干高くなります。
一般に、CakePHP フレームワークは非常に重要な時代を代表し、PHP フレームワークを代表するものであり、現在、多くの自作フレームワークが CakePHP メソッドを模倣しており、CakePHP は RoR アジャイル開発手法を明らかにしています。データベース操作を唯一のモデルとして考慮する設計哲学は、迅速なアプリケーションとプロトタイプを開発するための優れたツールです。同様に、Web 2.0 Web サイトの開発フレームワークとしても選択する価値があります。
【Zend Framework】
公式サイト:http: //framework.zend.com
中国語マニュアル: http://www.phpeye.com/zf
ビデオチュートリアル: http://framework.zend.com/docs/screencasts
テストバージョン: ZendFramework-1.5.0
利点:
1. 正式に作成されており、多くのライブラリが付属しています。フレームワーク自体は非常に洗練されており、実行効率は中程度であり、ルーティング機能と設定ファイルが備わっています。比較的強力です (XML と php INI を処理できます)。さまざまなライブラリが非常に強力で、フレームワークであるだけでなく、(PEAR に代わる) 大規模なクラス ライブラリであることも含め、すべての PHP フレームワークの中で最も包括的な機能を備えています。その主な機能は、データベース操作に加えてモデル層を直感的にサポートし (CodeIgniter や CakePHP よりも強力)、ローダー機能を使用して他の新しく追加されたクラスをロードできることです。キャッシュ機能は非常に強力であり、フロントエンドキャッシュからバックエンドキャッシュへ。ターミナルキャッシュはMemcache、APC、SQLite、ファイルなどをサポートし、データベース操作機能は非常に強力で、さまざまなドライバー(アダプター)をサポートします。
れ
ており、学習コストは中程度です。
1. MVC 機能は比較的弱く、View 層は単純に (実装されていないのと同じように) 実装されており、フロントエンド ページを強力に制御することはできません。
2. エントリ ファイルを含むアプリケーションを作成するには、エントリ コストが高くなります。
3. Zend Framework は中規模アプリケーションのフレームワークとしては大きな問題はなく、大規模アプリケーションのフレームワークとしてはほとんど使用できませんが、非常に成熟した大規模な PHP フレームワークとしては、まだいくつかの努力が必要です
。評価する:
公式に作成されたフレームワークとして、Zend Framework の野心は、他のフレームワークを排除すると同時に、多くの強力なクラス ライブラリをカプセル化し、ワンストップのフレームワーク サービスを提供したいと考えています。非常に強力な製品を開発する能力があるため、フレームワークの改善にさらに時間を費やすことができれば、Zend Framework には明るい未来があることは基本的に確実です。同様に、Zend Framework アーキテクチャ自体は比較的洗練されており、これは Zend が公式に多くの専門家を擁し、設計コンセプトが比較的進んでいることを示しています。ただし、ビュー レイヤーや自動化スクリプトなどの一部の機能は完全には実装されていませんが、これらはすべて依存しています。今後のアップグレードについて。一般的に、Zend Framework は最も期待されているフレームワークです。もちろん、今プロジェクトで使用したい場合には問題ありません。
【Symfony】
公式サイト:http: //www.symfony-project.org
中国語ウェブサイト: http://symfony-project.cn
決定版ガイド: http://www.symfony-project.org/book
学習リファレンス: http://sf.thecodecentral.com
テストバージョン: symfony-1.0.13
利点:
1. Symfony は私が知っている中で最も強力な PHP フレームワークであり、私は長い間使用してきましたが、多くの機能はまだ発見されていません。MVC の 3 つの層を完全に実装し、$_POST、$_GET を含むすべてをカプセル化します。データ、例外処理、デバッグ機能、データ検出。強力なキャッシュ機能、クラスの自動ロード (この機能は非常に優れています)、強力な i18n 国別化サポートが含まれており、非常に強力なビュー レイヤー操作を備えており、複数のファイルを部分的に含めることができます。非常に強力な設定機能である yml 設定を使用すると、すべてのフレームワークとプログラムの実行動作を制御できます。これは非常に強力なので、独自のさまざまなクラスを自由に定義でき、symfony はこれらのクラスを自動的にロード (自動ロード) できます。プログラム内で自由に呼び出すことができます。強力なマルチレベルのプロジェクトおよびアプリケーション管理が含まれています: プロジェクト --> アプリケーション --> モジュール --> アクション。これにより、1 つのプロジェクトで複数のアプリケーションのニーズを満たすことができます。各レイヤーは独自のクラス ライブラリ、レイアウト、プロジェクトの構築、アプリケーションの構築、モジュールの構築、キャッシュの更新などの非常に強力なコマンド ライン操作機能を定義できます。
2. Symfony を使用すると、開発コストが大幅に節約され、複数の人が共同作業する場合に問題がなくなるため、大規模で複雑なプロジェクトを開発する場合は間違いなく Symfony が最初の選択肢になります。基本的なクラスがプロジェクト レベルで定義された後は、任意のモジュールを使用できます。コードを大幅に再利用することのデメリット
:
1. データベース操作モデルは重量級の prop と creole を使用していますが、私がテストしたバージョンでは、それらはアドオンに移動されました。これらは使用することもできます。
2. キャッシュ機能は制御できません。開発中およびデバッグ中は常にキャッシュがキャッシュされます。キャッシュをクリアして再構築するには、symfony cc および symfony rc を実行する必要があります。
3. 効率はあまり高くありません。特にテンプレートの解析と設定ファイルの読み取りのプロセスには時間がかかります。
4. 学習コストが非常に高く、中国には成熟したコミュニティやドキュメントが存在せず、中国語のマニュアルさえ存在しないため、すべての機能を習得して評価するには多大な時間がかかります
。
Symfony は間違いなくエンタープライズレベルのフレームワークであり、Java 分野の強力なフレームワークと競合できる唯一のものであるように見えますが、強力なものは当然ながら、プロジェクト開発にも役立ちます。複雑なプロジェクトの場合は、後の段階でのメンテナンスコストが比較的低く、再利用性が非常に高いため、価値があると思います。同様に、より複雑なインターネット プロジェクトに Symfony を使用する場合は、データベースの分散の問題を考慮する必要があります。その後、Symfony に付属するデータベース操作レイヤーを放棄し、それを自分で定義する必要があります。もちろん、Symfony は任意のモデル レイヤーの構築をサポートします。
【総評】
上記フレームワークはそれぞれに特徴があり、いずれもオープンソースプロジェクトですが、一般的に小規模プロジェクトにはCodeIngiter、小規模プロジェクトにはCakePHPやZend Frameworkが適しています。 Symfony は中規模のプロジェクトに適しており、大規模で重量のあるプロジェクトには Symfony が適しています。プロジェクトを選択するときは、フレームワークのカスタマイズ性と拡張性を十分に考慮する必要があります。これは、各プロジェクトがニーズの変化に応じて変更を加えるかどうかを決定できないためです。
比較的に、Zend Framework と Symfony は変更への対応力が高く、特にモデル層のクラスを自由にカスタマイズできるため、独自のビジネスクラスやデータ処理クラスを追加するのに非常に便利です。個人的にはこれらのフレームワークを推奨します。中規模および大規模なプロジェクトで使用します。 CodeIngiter と CakePHP は、中小規模のプロジェクト、迅速な開発、プロトタイプの構築にも重要な役割を果たし、目標が明確でないプロトタイプ プロジェクトの開発に非常に適しています。フレームワークを理解する最良の方法はそれを使用することであり、フレームワークを学ぶ最良の方法はビデオを見ることです。 :-)
善良な人は異なる意見を持ち、賢い人は異なる意見を持っています プロジェクトのフレームワークを選択するときは、プロジェクトのニーズと将来の変化を慎重に検討し、プロジェクトの開発速度と適切なバランスを達成するために適切なフレームワークを選択してください。もちろん、後の保守性を考えると、自分でフレームワークを作成する方が適しているかもしれません。 :-)
いくつかのフレームワークの一般的な評価を行ってきましたが、多くの点が的外れであると思いますので、コメントや修正も歓迎します。