考慮しなければならないことがいくつかあります。
- PHPで従来のMVCを実行することはできません。代わりに、MVCに触発されたパターンがあります
- Webに実装した場合、ビューインスタンスとコントローラーインスタンスの間には1:1の関係があります。
- MVCのモデルはクラスではありません。それは多くの異なるクラスを含むレイヤーです
- ビューはダムテンプレートではなく、プレゼンテーションロジックを処理するクラスのインスタンスです。
WebベースのMVCで表示
上記のように、MVCおよびMVCに触発されたパターンのビューは、プレゼンテーションロジックを担当します。これには、エラーメッセージの表示やページ付けなどが含まれます。これを行うために、各ビューは複数のテンプレートを処理できます。
ビューはモデルレイヤーから情報を受け取り、それに応じて動作します。モデルレイヤーからの情報がビューに表示される方法は、MVC風のパターンの最も重要な違いの1つです。
古典的なMVCパターン
モデルの状態が変更された場合、モデルレイヤーの構造は情報を表示に送信します。これは、オブザーバーパターンを介して行われます。
Model2MVCおよびHMVCパターン
ビューはモデルレイヤーに直接アクセスでき、モデルレイヤーから情報を要求できます。これは元のパターンに最も近いものです。
MVVMおよびMVPパターン
Viewはコントローラーを介して情報を受け取り、コントローラーはモデルレイヤーから情報を要求します。パターンのさらなる違いは、データを表示に渡す前にデータをどのように処理するかに起因します。
あなたが今持っているように見えるのは、実際には単なるテンプレートです。1つと同様に、この記事で説明されています。最終的には、プレゼンテーションロジックを含める場所がない構造になります。長期的には、これによりプレゼンテーションロジックがコントローラーにプッシュされます。
では、その「ようこそ」メッセージはどうでしょうか。
ウェルカムメッセージを表示するには、ビューでモデルレイヤーに現在のユーザーの名前を要求する必要があります。モデルレイヤーが何らかのエラー状態を返した場合は、エラーメッセージテンプレートを表示してレイアウトに挿入します。
ユーザーの名前がモデルレイヤーから問題なく取得された場合は、挨拶を含むテンプレートを表示して選択し、テンプレートに値を設定してレンダリングします。
パーツはどのような順序でロードする必要がありますか?
コントローラーがモデルとビューを初期化する必要があるという考えは、Web用のMVCの非常に原始的な解釈に由来します。静的なWebページにMVCを直接移植しようとしたページコントローラーとして知られるパターン。
私の意見では、これは順序である必要があります:
モデル
構造を初期化し、それを介してモデルレイヤーを処理します。Authentication
ほとんどの場合、ログイン用のサービスやドキュメントを処理するためのサービスなどを構築できる、ある種のサービスファクトリになりLibrary
ます。そういうもの。以前、モデルレイヤーの構造について少し長いコメントを書きました。あなたはそれが役に立つと思うかもしれません。
意見
ルーティングメカニズムから収集した情報に基づいてビューインスタンスを作成します。Model2またはHMVCを実装している場合、ビューにはコンストラクターにServiceFactoryのインスタンスが必要です。
MVVMまたはMVPを実装している場合、ビューのコンストラクターには特別な要件はありません。
コントローラ
これは、作成する最後の構造です。これは、コントローラーがビューレイヤーとモデルレイヤーの両方にコマンドを送信する役割を果たし、コマンドが変更されてから両方の状態が変更されるためです。したがって、コントローラーはコンストラクターでビューファクトリとサービスファクトリの両方を受け取ることを期待する必要があります。
MVCの基本要素が初期化されたら、コントローラーでメソッドを呼び出し、現在のビューをレンダリングします。
これは非常に単純化された説明であることに注意してください。