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