MVC でモデルを構造化する方法
MVC を理解する
MVC (モデルビュー) -Controller) は、アプリケーションの関心事を 3 つの異なる層 (モデル、モデル、レイヤー) に分離するためにソフトウェア開発で使用されるパターンです。ビューとコントローラー。 MVC フレームワークでは、モデルはアプリケーションのビジネス ロジックとデータを表します。
モデルの定義
モデルをクラスや単一のオブジェクトと混同しないでください。むしろ、これは 3 種類の構造で構成される層です:
-
ドメイン オブジェクト: 論理エンティティを表し、ビジネス ロジックを含みますが、ストレージまたは取得メカニズムは認識しません。
-
データ マッパー: データ ストレージとの対話を担当します。 SQL クエリの実行または XML ファイルの読み取り/書き込み。
-
サービス: ドメイン オブジェクトとデータ マッパー間の対話を促進し、ビジネス ロジックの上位レベルのインターフェイスを提供します。
モデルとのインタラクション
アクセスサービスへ:
- 依存関係注入またはサービス ファクトリを使用して、サービス インスタンスをビューとコントローラーに注入します。
モデル状態の変更:
- コントローラーは、ログ記録などのユーザー入力に基づいてモデルの状態を変更します。ユーザー内またはデータの検証。
状態の変更の表示:
- ビューは、モデルの更新された状態をユーザーに表示します。たとえば、ログイン後に別のページにリダイレクトします。
モデル
-
サービス: ビジネス ロジックをカプセル化するサービス メソッドを定義し、基礎となる実装の詳細を非表示にします。
-
ドメイン オブジェクト:ドメインの概念とロジックをまったく知識がなくても実装できます。永続性。
-
マッパー: 特定のクラスまたはスーパークラスのカスタム データ マッパーを作成して、永続性とデータ アクセスの問題を抽象化します。
追加考慮事項
-
データベース テーブルとモデル:
- ドメイン オブジェクトとマッパーは常に 1:1 であるとは限りません。データベース テーブルとの 1 つの関係。
- 1 つのマッパーが複数のテーブルに影響を与えることも、その逆のことも可能その逆も同様です。
- 単一のドメイン オブジェクトのデータを複数のテーブルに保存することも、その逆も可能です。
- 単一のドメイン オブジェクトに対して複数のマッパーが存在する可能性があります。
-
vs.テンプレート:
- ビューは、テンプレートだけでなく、プレゼンテーション ロジックを処理します。
- 単一のビューは、受信したデータに基づいて複数のテンプレートを使用できます。
-
コントローラーとビュー関係:
- ビューとコントローラーの間の 1:1 の関係を維持します。
- 各ビューには、その機能のために専用のコントローラーが必要です。
以上がMVC フレームワークでモデルを効果的に構造化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。