返信内容:
他の人がフレームワークを開発すると聞くと、多くの人は最初に車輪の再発明を考えるでしょう。
実際、ホイールを作るプロセスは知識を急速に蓄積するプロセスであり、自分の欠点をすぐに発見し、発見していない知識ポイントを学ぶことができます。したがって、ある程度の PHP の基礎を持っている人は、全員が完全な基本フレームワークを完成させるよう努めることをお勧めします。
次に、ホイールを構築する以前のプロセスを共有しましょう。
1. 複数のフレームワークを試して、使用方法のドキュメントを読んでみてください。その目的は、その機能を理解して発見することです。 . いくつかのより良い使用設計;
2. ドキュメントを読みながら、この部分の実装原理を並行して考えます。理解できない場合は、メモするか、Github にアクセスしてソース コードを参照してください。コードの構造に慣れていない場合は、見つけるのが難しいかもしれないので、最初に書き留めることをお勧めします)。
3. プロジェクトの構造を見て、この構造の意味を考えてください。エントリ ファイルと静的リソースを他のディレクトリから分離する理由は何ですか。
4. ソース コードの実行プロセス (エントリから出力まで) とエラー処理を試してください。 、テンプレート エンジン、構成、その他の理解すべき点 (基盤が許可する場合は、このプロセスで上記の疑問を解決します);
5. まず、大まかな機能のリストを作成し、必要なポイントを書き留めます。実装する;
6. 次に、コード構造を整理する方法を考えます。実践的な経験があまりない場合は、最も慣れている方法でコードを整理します (最初に実装してから最適化します)。 7. まずは基本的な Hello World を実行してください!;
8. 少しずつ機能を追加していきます。
9. ここで機能を追加するときは、すべてのコンポーネントを実装してみてください。ファイルのアップロードやエラー処理など、自分で実装できるものはすべて実践的な知識を得ることが目的です。
このプロセスは、基礎が少し弱い人にとっては特に難しいかもしれません。そのため、行き詰まった点に遭遇した場合は、まずその点で問題を解決し、すぐに知識を追加してから来てください。戻って続行します。
フレームワークを構築するプロセスで通常使用されるいくつかのポイントをまとめてみましょう (以下は順番ではありません):
1. MVC
2. 自動読み込み: PHP: 自動クラス
;
3. エラー処理:
http://php.net/manual/zh/book.
errorfunc.php
;4. PHP 標準ライブラリ (SPL)PHP: SPL - マニュアル
;
5. 出力バッファー制御: PHP: 出力コントロール
;
6. PHP オプション/情報: PHP:PHP オプション/情報
;
7. データベース抽象化レイヤー: PHP: データベース抽象化レイヤー
;
8. セッション拡張: PHP: セッション拡張
;
9. リフレクション:
http://php.net/manual/zh/book .
reflection.php
;10. クラスとオブジェクト: PHP: クラス/オブジェクト
;
11. 画像処理と GD: PHP: GD - マニュアル
;
12. 電子メール関連の SMTP;
13. ファイル システム: PHP: ファイルシステム;
14. 定義済み変数: PHP: 定義済み変数
;
15. 文字列処理: PHP: 文字列 - 手動
;
15. 正規表現:
http:/ /php.net/manual/en/book.
pcre.php
;上記基本についてはこれで十分かもしれませんが、上記の各リンクには多くのコンテンツが含まれていますが、一般的に使用されるものをマスターしておくと、検索エンジンを使用して理解することができます。 フレームワークにさらに賢い機能や豊富な機能を追加したい場合は、以下の知識ポイントを参照してください。
1. 一般的な設計パターン: ファクトリ、シングルトン、外観、オブザーバーなど。
2. イテレータなどの事前定義されたインターフェイス: PHP: 事前定義されたインターフェイス
;
3. データベースの拡張: PHP: データベースの拡張
;
4. PHP のサポート: 国際化と文字エンコーディングのサポート
;
5. よく使用されるキャッシュ、Redis、Memcache、Apc など;
6. ActiveMQ、Beanstalkd などのキュー サービス。 🎜>7. Mongo などのマルチデータベースのサポート;8. イベントとフック;
フレームワークを作成する方法もありますが、ここでは「作成」は適切ではありません。結合フレームワーク。これは、Composer
を使用して、オープン ソース コンポーネントに基づいた独自のフレームワークを組み立てることを意味します。もちろん、初心者がこれを行うことはお勧めできません。多くの基本的なことを運動できなくなる可能性があるためです。個人の技術的能力が比較的成熟していて、プロジェクトを迅速に開発することが目的の場合、これを使用することは間違いなく強力なツールです。
最後に、いくつかの参考フレームワークをお勧めします。
1. Slim Framework
- フレームワークの基本機能をすべて満たしており、学習に非常に適したマイクロ フレームワークです。 ;
2 . Silex
- Symfony2 コンポーネントに基づくマイクロフレームワーク;
- 明確な構造を持つ PHP フレームワーク。さらに、参考用のチュートリアルがいくつかありますが、最初は自分で試してみることをお勧めします。1. 独自の PHP MVC フレームワークを作成する (パート 1)
2. PHP を使用して独自の MVC フレームワークを構築する
---2015.02.28 補足---下の階の皆さんからの回答を読んだ後、皆さんが本題から外れていることがわかりました。質問は、「
フレームワークを完成させる方法
」ではなく、「
どのような種類の知識の蓄えが必要ですか?
」です。フレームワークを完成させるには N 通りの方法があり、いくつかの回答によると、以下、完成しても何も分かりませんが、なぜフレームワークとして実行できるのか途中で原理が理解できないので、誤解を招かないように慎重に答えてください。
実はとても単純なことなのです。 まず次の知識を習得してください:
1. URL を介したパラメータ処理の受け渡し 2. include の意味を理解する
3. 関数のエコーと定義ができるようになります。
OK、始めましょう
まず、php ファイルindex.php を作成して、さまざまな GET パラメータを通じてさまざまな関数を実行できるようにします。
作曲家を学ぶには、このシリーズをご覧ください。
Composer を使用して、独自の PHP フレームワークを段階的に構築します
https://
<code class="language-text"><?php
function run_it()
{
$function_name=$_GET['fn'];
$function_name();//通过fn参数来运行函数
}
run_it();
</code>
ログイン後にコピー
phphub.org/topics/159
実際、前の人たちはすでにそれを明確にしています。
私は以前にあなたのアイデアを経験しました。簡単に言うと、有名な製品を使用する場合、彼らは通常実装に忙しく、マクロの認識が欠けています。したがって、フレームワークを開発するのが通常です。
私も当時は、上で述べたことほど深く考えずに開発しました。
それは単純なルーティング分散と mvc 階層化でした。基本的な棚を設置したら、徐々に改善していきます。
職場で、自分だけで完了するだけで済む 1 回限りの小さなプロジェクトに遭遇した場合は、独自のフレームワークを試してみることができます。
いくつかのシンプルなフレームワークを探すことをお勧めします。個人的には、最も明確な構造を持つ codergniter をお勧めします。
以前ヘルプを見たところ、学者が Laravel 5.0 を使用して小さなアプリケーションを開発していることを知りましたが、まだ自信がなく、このフレームワークに対する知識と理解が不足していました。しかし、このフレームワークの人気の高さを見て、
質問:
私は PHP が好きで、PHP と laravel をマスターしたいと考えています。この場合、基礎から学習して自分でフレームワークを作成する必要があります。 ?
フレームワークを書いたことがない場合、各フレームワークの内容について議論するのは無意味です
最後に、フレームワークを書きました。 個人的には、フレームワークを自分で書くことは非常に重要だと感じています。独自の論理的思考、開発アーキテクチャ、そしてこの言語は質的に改善されました。書く過程では、ci tp yii の 3 つのフレームワークのソース コードを参照しながら 2 つのバージョンを作成しました (アイデアだけを見て、ラフを破棄し、エッセンスを選択しました)。ブログの記事 20 件
メイン トピック:
知識が必要
1 ルート分析
2 ルート配布
3 IoC
4 データベースのカプセル化
5 キャッシュのカプセル化
6 テンプレート解析ファイルキャッシュ
7 安全な xss SQL インジェクション
8 http 操作
9 画像操作
10 など多数
すべての部分で多くの知識ポイントが拡張されます
最後に: 自分で書いたフレームワーク
fantiq/phpframework · GitHub
今これをやっているのですが、ちょっと不器用です。興味のある方はお互い勉強しましょう(*^_^*)
動揺
クラス ライブラリとプラグインは単なるクラウドであり、合理的なアーキテクチャ仕様が最も重要です。
象を踊らせるには、強力でありながらできるだけ軽くし、大量のクラスや設定ファイルを参照しないでください。
多くのフレームワークはクラス ライブラリとしか言えません