現在、MVC 用の PHP オープンソースの無料フレームワークが多数あります。この記事の目的は、構造を学ぶことです。オープンソース MVC フレームワークをより適切に適用できるように、MVC と MVC アイデアを準備します。
注: 以下の定義は狭いものであり、今回解決する問題の領域を制限するために使用されます。これは業界標準ではありません。
(1) 軽量MVC定義:
1. フレームワークはアプリケーションに侵入せず、インターフェースクラスに依存しません
2. フレームワークには設定もアノテーションもありません
3. 使いやすく、理解しやすい 複雑さを避けるため、当面は RESTful には関与しません。
(2) 軽量MVCインターフェース:
1. コントローラーはセッターを使用してリクエストパラメーターを注入し、book.title.などの階層的な注入をサポートします。
2. コントローラーはゲッターを使用してデータを View に提供し、対応する属性値は ${property} のように View で直接取得できます。3. コントローラーは、セッター関数とゲッター関数以外の関数を使用してリクエストを処理します。
4. コントローラーは関数の戻り値を使用してジャンプを制御します。 1 つのコントローラーが 2 つの View に対応することは許可されません。
5. コントローラーのモデルへの依存関係は、モデル間の依存関係も含め、セッターを使用して自動的に組み立てられます。6.loginUserId などのセッション パラメータも、setter を通じてコントローラに注入されます。loginUserId に注入されたリクエスト パラメータがある場合、それらもセッション パラメータによって上書きされます。
7. ViewとControllerは1対1で名前によってマッピングされ、JSP、Velocity、FreeMarker、CommonTemplateなどのさまざまなViewテンプレートタイプの拡張機能をサポートします8. Viewは、暗黙的なControllerに相当するControllerなしで実行することもできます。
9. フレームワークは、ルールに基づいて、com.company.module のように、特定のパッケージ名がモデル、特定のパッケージ名がコントローラ、特定のディレクトリがビューであることが合意されています。コントローラーはモジュールを自動的に検出し、シングルトンとして使用します。モデルはモードでロードされ、コントローラーはプロトタイプ モードでロードされます。
要するに、インターフェースにはセッター、ゲッター、自動マッピングルールしかありません
(3) 軽量MVCアクセス:
http://ホスト名[:ポート][/アプリケーション名]/モジュール名/コントローラ名/関数名.html[?パラメータ名=パラメータ値]
注: 角括弧は省略を表します
(4) 軽量MVC実装:
上記のインターフェースに準拠した実装はどれでも許容されます。
(5) 軽量MVCのメリット:
ビジネス ロジックはどのフレームワークにも依存せず、ビジネス コードに影響を与えることなくあらゆるフレームワークに適応できます。古いフレームワークが削除され、誰もそれを保守しない場合は、より安定した新しいフレームワークに最速で移行できます。
理想は美しいですが、現実は残酷です。
http://www.bkjia.com/PHPjc/928041.html
www.bkjia.comtrue