私はすでに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全体として、およびインスタンスについて完全に無知でなければならないことに注意してください。viewcontroller