PHP の初心者として、開発フレームワークをどのように学べばよいでしょうか? どこから始めればよいでしょうか?
返信内容:
thinkphp は簡単に始めることができ、機能も比較的充実しています。これを読んだ後、CodeIgniter、zend Framework、yii について学び、とても役に立ちました。
主なリファレンス PHP フレームワークには、
CodeIgniter、
CakePHP、
ZendFramework、
Symfony が含まれます。私は多くのフレームワークを真剣に使用したことはありません。私の意見の多くは未熟であったり、間違っていたりする可能性がありますので、一緒に成長していきましょう。
CodeIgniter
利点:
1. 構成が簡単で、すべての構成が PHP スクリプトを使用して構成され、実行効率が高い。基本的なルーティング機能があり、ある程度のルーティングを実行できる。一定レベルのインターフェイスの外観を作成できます。データベース層は適切にカプセル化されており、基本的な MVC 機能を備えています
2. 高速かつ簡潔、コード量が少なく、実行パフォーマンスが高く、シンプルな PHP フレームワーク、使いやすく、学習コストが低い、詳細なドキュメントが付属しています シンプルで使いやすいライブラリが多数あり、フレームワークは小規模なアプリケーションに適しています
欠点:
1. モデル層を単にデータベース操作として理解します
2. PHP フレームワークはやや単純で、小規模なアプリケーションにしか対応できず、中規模のアプリケーションのニーズにも対応できます。
評価:
一般的に、シンプルで高速なアプリケーションを完成させるには CodeIgniter を使用する価値があります。同時に、テンプレートの再利用を容易にするためにある程度のレイアウトを構築できます。データ操作層はカプセル化されており、CodeIgniter はあまり複雑なデザインパターンを使用せず、実行パフォーマンスとコードの読みやすさの両方を備えています。良い。追加のライブラリに関しては、シンプルで効率的で悪くありません。
CakePHP 利点:
1. CakePHP は、データベース操作の設計方法とアクティブ レコード方法を含む、非常に洗練された設計レベルで、RoR に最も似た PHP フレームワークです。不要なライブラリ、すべての関数は純粋なフレームワークであり、実行効率は非常に優れています。データベース層の hasOne 関数と hasMany 関数は非常に強力で、複雑なビジネス処理に適しています。自動スキャフォールディング機能も悪くありません。 scaffold) は非常に強力で、中規模のアプリケーションに適しています。基本的に MVC の各層に実装されており、コマンド ライン スクリプトを自動的に実行する機能があります。
2. ドキュメントは比較的完成しており、中国での普及に成功しています。 CakePHP はほとんどの人が知っており、学習コストは中程度です
欠点:
1. CakePHP の非常に深刻な問題は、モデルをデータベース層の操作として理解していることです。これは、データベース以外の操作能力に重大な影響を及ぼします
2. CakePHP のキャッシュ機能と設定機能は少し弱いです。CakePHP は大規模なアプリケーションには適しておらず、小規模なアプリケーションには学習コストが若干高くなります。
評価:
一般に、CakePHP フレームワークは非常に重要な時代を代表し、PHP フレームワークを代表しており、現在その役割を果たしています。多くの自作フレームワークが CakePHP の画期的な製品である CakePHP メソッドを模倣しています。 RoR のアジャイル開発手法とデータベース操作を唯一のモデルとして考慮する設計思想は、迅速なアプリケーションとプロトタイプを開発するためのツールとして、同様に Web 2.0 Web サイトの開発フレームワークも選択する価値があります。
Zend Framework 利点:
1. 公式製品、多数のライブラリが付属、フレームワーク自体は多くのデザイン パターンを使用して記述され、アーキテクチャは非常にエレガントで、実行効率は平均的です。MVC 設計では、比較的シンプルで、ルーティング機能、比較的強力な設定ファイル (XML および php INI を処理できる)、さまざまなライブラリが非常に強力で、すべての PHP フレームワークの中で最も包括的です。 PHP フレームワークであるだけでなく、(PEAR に代わる) 大規模なクラス ライブラリであることがその主な特徴です。データベース操作に加えてモデル層を直感的にサポートでき (CodeIgniter や CakePHP よりも優れています)、Loader 関数を簡単に使用できます。追加されたクラスのキャッシュ機能は非常に強力で、フロントエンド キャッシュとバックエンド キャッシュの両方をサポートし、データベース操作機能が非常に強力です。さまざまなドライバー (アダプター) をサポートしています
2. ドキュメントは非常に充実しており、国内コミュニティは非常に成熟しており、現在多くの Web 2.0 Web サイトで使用されています。 学習コストは中程度です
欠点:
1。 . MVC 機能が比較的弱く、View 層の実装が簡単(実装されていないのと同じ))、フロントエンドページを強力に制御できない
2. 自動スクリプトなしでアプリケーションを作成し、エントリ ファイルを含めて手動で構築する必要があり、エントリ コストが高い
3. Zend Framework は中規模のアプリケーション フレームワークとしては大きな問題ではなく、大規模アプリケーションの PHP フレームワークとしてはかろうじて使用できます。しかし、非常に成熟した大規模な PHP フレームワークとしては、まだ努力が必要です
評価:
公式フレームワークとして、Zend Framework の野心は他のフレームワークを排除し、同時にカプセル化したいと考えています。さらに、同社の開発チームは非常に強力で、非常に強力な製品を開発する能力を十分に備えているため、Zend Framework の改善にさらに時間を費やすことができれば、基本的に明るい未来があることは間違いありません。フレームワーク。同様に、Zend Framework アーキテクチャ自体は比較的洗練されており、これは Zend が公式に多くの専門家を擁し、設計コンセプトが比較的進んでいることを示しています。ただし、ビュー レイヤーや自動化スクリプトなどの一部の機能は完全には実装されていませんが、これらはすべて依存しています。今後のアップグレードについて。一般的に、Zend Framework は最も期待されている PHP フレームワークです。もちろん、今すぐプロジェクトで使用することに問題はありません。
Symfony 利点
1. Symfony は私が知っている中で最も強力な PHP フレームワークであり、私は長い間使用してきましたが、多くの機能がまだ研究されていません。完全な MVC の 3 層を実装し、$_POST、$_GET データ、例外処理、デバッグ関数、データ検出を含むすべてをカプセル化します。強力なキャッシュ関数、クラスの自動ロード (この関数は非常に優れています)、強力な i18n が含まれています。 ; 国有化のサポート; 非常に強力なビュー層操作があり、複数のファイルを分割して含めることができ、yml 設定を使用してすべてのフレームワークとプログラムの動作を制御します。 speechless; あらゆる種類のクラスを自由に定義でき、symfony はこれらのクラスを自動的にロード (自動ロード) でき、強力なマルチレベルのプロジェクトとアプリケーション管理が含まれます。アプリケーション --> モジュール --> アクション。複数のアプリケーションのニーズを満たします。各層は、プロジェクトの作成、アプリケーションの構築など、独自のクラス ライブラリ、構成ファイル、レイアウトを定義できます。 、モジュールの構築、キャッシュの更新など;
2. Symfony を使用すると開発コストが大幅に節約され、複数の人が共同作業する場合に問題が発生しないため、大規模で複雑なプロジェクトを開発する場合は間違いなく Symfony が第一の選択肢となります。基本的なクラスはプロジェクト レベルで定義され、任意のモジュールを再利用できるため、開発プロセスが大幅に簡素化されます。 コードを使用します。
欠点:
1. データベース操作モデルは強力な prop と creole を使用しますが、私がテストしたバージョンでは、それらはアドオンに移動されました。使用するかどうかは自由です
2. キャッシュ機能は使用できません 開発とデバッグが常にキャッシュされるたびに、symfony cc、symfony rc を実行してキャッシュをクリアして再構築する必要があります。 ;
3. 効率はあまり高くありません。特にテンプレートの解析と設定ファイルの読み取りには時間がかかります。
4. 学習コストが非常に高く、成熟したコミュニティがありません。したがって、すべての機能を習得するには多くの時間がかかります
評価:
Symfony は間違いなくエンタープライズです 第一レベルの PHP フレームワークが一見競合できる唯一のものですJava 分野の強力なフレームワークを使用すると、当然ながら学習が複雑になりますが、複雑なプロジェクトを処理するには当然、Symfony を使用することをお勧めします。は比較的低く、再利用性が非常に高いです。同様に、より複雑なインターネット プロジェクトに Symfony を使用する場合は、データベースの分散の問題を考慮する必要があります。その後、Symfony に付属するデータベース操作レイヤーを放棄し、それを自分で定義する必要があります。もちろん、Symfony は任意のモデル レイヤーの構築をサポートします。
まとめ 上記の PHP フレームワークはそれぞれに特徴があり、いずれもオープンソースのプロジェクトですが、一般的には CodeIngiter の方が適しています。小規模プロジェクトの場合は、CakePHP と Zend Framework が中規模のプロジェクトに適しており、Symfony は大規模で重量のあるプロジェクトに適しています。ニーズの変化に応じて変更を加えるかどうかは判断できません。
比較的、Zend Framework と Symfony は変更への対応力が高く、特にモデル層のクラスを自由にカスタマイズできる機能があり、独自のビジネスクラスやデータ処理クラスを追加するのに非常に便利です。中規模および大規模なプロジェクトで使用するためのものです。
CodeIngiter と CakePHP は、中小規模のプロジェクト、迅速な開発、プロトタイプの構築にも重要な役割を果たし、目標が明確でないプロトタイプ プロジェクトの開発に非常に適しています。
最初からフレームワークを使い始めないでください。そうしないと、簡単にフレームワークに囚われてしまいます。最も基本的な PHP から作成を開始し、その後、独自のクラスのいくつかをゆっくりとカプセル化します。このプロセスでは、徐々に独自の開発クラスのセットを整理できるようになります。これらのクラスは、フレームワーク、つまりあなた専用のフレームワークであると言えます。
ここでは、Yii、CakePHP などの人気のあるフレームワークをいくつか見てみましょう。フレームワークの考え方を理解し、フレームワークが提供するAPIだけにとらわれるのではなく、柔軟にフレームワークを使いこなすことを学びましょう。
私が ThinkPHP を使用していたとき、あまりにも多くの人が PHP をよく学習せず、PEAR が何であるかさえ知らずに ThinkPHP を使用し始めたことを思い出します。 TPが提供する機能を使えばいろいろなことができるのですが、ドキュメントに載っていないドキュメントが出てきたり、柔軟に使いたいときはどうすればよいのかわかりません。これはフレームワークを使用することの悲劇と言えます。
裸の PHP を書く --> クラスを使用する --> MVC を理解する (またはデザインパターンを理解する) --> フレームワーク --> 柔軟に使用する --> フレームワークを自由に設定して変更できます。
これは私が考える順番です、参考までに。CodeIgniter を推奨する
理由:
1. サンプルが詳細で、直接使用できます
2. 中国語のドキュメントが充実しています
3. フレームワーク自体はシンプルで明確なデザインで強力です。機能
phpmanul
招待してくれた @justjavac に感謝します
条件: 初心者、フレームワーク
したがって、まず中規模のフレームワーク (CakePHP、Yii)、大規模なフレームワーク (ZF、Symfony) を除外し、回答も除外します。ネイティブ コードで直接書かれた答えであれば、あとは小さな PHP フレームワークから選択するだけです。初心者の観点からすると、使いやすさと理解しやすさが最も重要です。初心者に適したフレームワークは次の条件を満たす必要があります:
-優れたわかりやすいドキュメント
-緩やかな学習曲線
- 学習コストが低い
- フレームワークは比較的標準的で、あまり人気がありません
- ユーザーが多く、質問に対する回答、コミュニティやその他の参考リソース、豊富なチュートリアルがすぐに得られます
- 禁止複雑なデザイン パターンを追加します
- MVC、テンプレート、モデル、クラス ライブラリ、ヘルパーなどの単純なフレームワーク要素が必要です
要約すると、CodeIgniter
私には才能がありません。初心者に適した小さなフレームワークを作成しました: phoenixg/phx · GitHub
初心者の方は、まず PHP のマニュアルや MYSQL のマニュアルを読んで基礎知識をしっかりと理解してください。これが最も重要なことです。 PHP フレームワークを学びたい場合は、doitphp を強くお勧めします。その理由は、簡単に始めることができるからです。
私は、fleephp から始めました。個人的には、フレームワークのコメントが非常に明確だと思います。
その後、オブジェクトチェーンクエリの方法に出会いました。確かにこれは非常にパフォーマンスを消費しますが、現在はチーム自体が作成したフレームワークを使用しています。
私はしばらく Drupal を使って開発しましたが、初心者にはかなり難しいという印象です。初心者には使用しないことをお勧めします。次々とプロジェクトを引き継いで、WordPress、zendphp、thinkphp を次々と使ってみると、複雑すぎて情報が網羅されていないと感じました。最近、より大きなプロジェクトを行うために CI を使用しました。一般的に、CI の中国語ドキュメントの方が詳細で軽量なので、多くのことを自分で書かなければなりません。 CIを学ぶとMVCの本質を深く理解できるだけでなく、言語開発レベルも向上します。学習方法は、
http://
codeigniter.org.cn/user
_guide/index.html
に従うことです。
それをすることで目的は達成できる。
Zend Framework から始めて、操作メカニズムをマスターしてください。複雑さを恐れないでください。複雑さを理解して初めて、それを好きなように単純化できます。