あなたは非常に興味深い根本的な質問を提起しました。大規模なプロジェクトアーキテクチャとフォルダー構造の編成(アーキテクチャの二次的なもの)に関する質問。
今日、CMSフレームワークアーキテクチャを構築する最も一般的なアプローチは、MVCパターンの使用です。独自のMVCフレームワークの構築に関するいくつかの優れた記事があります。そのうちの1つは、PHPでMVCフレームワークを構築することです。
MVCは、Model、View、Controllerの略です。これらのアプローチは、MVC、HMVC、MVPなど、好きなように呼び出すことができます。本質は、システムの個々のコンポーネントを分離することです。「コントローラー」は「モデル」からデータを取得して「ビュー」に送信し、「表示」が最終的なHTMLをレンダリングします。に「V」contacts.php
とに「MC」を既に実装していますcontacts_class.php
。これで、モデルとコントローラーからビューが分離されました。これで、他の部分をそのまま残して、「ビュー」を簡単に変更できます。
MVC、MVP、またはその他の「MV」パターンを盲目的に追跡することはお勧めしません。それは適切性、有効性、味の問題です。
一般的な動的Webサイトアプリケーションには、次のようなコンポーネントが含まれる場合があります。
- エントリポイント、言う
index.php
- ヘルパーライブラリー/クラス
- リクエストルーター
- モジュール、コンポーネント、またはコントローラー
- テンプレートエンジンまたは単一のビュー
実際のWebアプリケーションには、イベントハンドラー、イベントディスパッチャー、フックなどの他のコンポーネントが含まれている場合がありますが、これらは実際には微妙です。さて、私がそれを提示したい方法で提示させてください:
共通のフレームワーク操作ルーチンは次のとおりです。
- ブラウザの要求は、エントリポイントの実行可能ファイル/スクリプト(
index.php
)に直接送信されます。
- エントリポイントスクリプトは、ヘルパーライブラリ、クラスをロードし、プログラミング環境の初期化をさらに実行します。
- URLは要求ルーターインスタンスに渡されます。このステップは、ステップ2の一部にすることができます。
- 要求ルーターはURLを解析し、特定のコンポーネント、モジュール、またはコントローラーに操作をディスパッチします。
- コンポーネント(またはコントローラー)は、ルーティングされた要求を処理し、レンダリングするデータをビューに送信します。
対応するプロジェクトフォルダー構造を図に示します。
他のフレームワークの実装方法を調査することをお勧めします。最初に推奨されるCMS /フレームワークは、CodeIgniter、OpenCart、Joomla 1.5、およびTango CMSです。