私はすでにMVC と PHP のコンテキストでモデルについて広範囲に書くことができたので、トライアドの一部に焦点を当てView
ましょう。Controller
@Gordonが既に述べたように、Web で行うことは従来のMVC ではありません。ラリーはできません。代わりに、元のアイデアの明確なバリエーションを考え出しました。
ビューはテンプレートではありません
MVP の特に不適切な実装を使用していない限り、view
インスタンスはオブジェクトであり、プレゼンテーション ロジックを担当します。
controller
インスタンスがアクセスする必要があるかどうかview
は、使用する MVC にヒントを得たパターンによって異なります。MVP および MVVM パターンでcontroller
は、インスタンスが情報を要求し、 (何らかの変更または追加のフラグを使用して)に情報model layer
を渡します。view
Model2 パターン (元のコンセプトにより近い) では、view
インスタンス自体が から情報を取得できますmodel layer
。この場合、controller
インスタンスにアクセスする必要はありません。
コントローラーは何を担当していますか?
のインスタンスは、controller
から構造体を直接インスタンス化するべきではありませんmodel layer
。これには主に 2 つの理由があります。
- 特定のクラス名への密結合を引き起こし、テストとメンテナンスを困難にします
- 追加の責任 (または変更の理由) を追加し、したがって - SRPに違反します。
からの構造体の初期化model layer
は複雑です。通常、データベース接続、キャッシュ ハンドラ、さらにはその他の構造を から注入する必要がありますmodel layer
。このタスクは、コントローラが使用する別のファクトリのようなインスタンス (controller
とインスタンス間で共有) に任せる必要があります。view
controller
インスタンスの主な役割は、 の状態を変更することですmodel layer
。ユーザーからの入力を受け取り、それを が理解できる形式に変換する必要がありますmodel layer
。
model layer
全体として、およびインスタンスについて完全に無知でなければならないことに注意してください。view
controller