9

どの MVC フレームワークにも当てはまる質問があります。私は Zend Framework MVC を使用しています。

いつ新しいコントローラーを作成する必要がありますか? コントローラ層は正確に何を定義する必要がありますか?

私は MVC を使用していくつかのアプリを作成し、徐々に再利用できるようにしましたが、コントローラー クラスの名前付けには常に苦労していました。ほとんどの場合、どの URL リクエストにも一致するため、ビジネス/フロント エンド ロジックに一致します。しかし、場合によっては、完全に恣意的に思えることもあります。

従うべきヒューリスティック/ガイドラインを持っている人はいますか? MVC、特に PHP に関する誇大宣伝のように思えますが、実際の規約やヒューリスティックに関するデータはほとんどありません。整理されていない MVC アプリケーションを作成するのは非常に簡単なので...

4

2 に答える 2

10

私は通常、機能の論理グループごとに1つのコントローラーを持っています。多くの場合、これはモデルごとに1つのコントローラーに対応しますが、そうでない場合もあります。

カテゴリのリストを表示する単純なオンラインカタログを作成していると想像してください。ユーザーがカテゴリを選択すると、そのカテゴリの製品のリストと、CRUDカテゴリおよび製品の操作用の管理パネルが表示されます。2つのモデル(CategoryModelProductModel)があります。フロントエンドのカテゴリリストを生成するコントローラーと、製品リストを生成する別のコントローラー(例CategoryControllerProductController)があります。次に、バックエンドにカテゴリと製品のコントローラーがあります(AdminCategoryControllerおよびAdminProductController)。2つのバックエンドコントローラーは、それぞれのモデルのリスト/追加/編集/削除/表示操作を処理します。URL構造を考えて、関連する関数を関連するURLに配置すると、コントローラー構造はURL構造と一致することがよくあります。実際、一部のフレームワーク(CodeIgniterなど)は、デフォルトの動作としてコントローラーの名前に基づいてリクエストをルーティングします。

コントローラーに何が入るかについては、モデルはデータアクセス用であり、データベース構造をラップして非表示にするという考えで作業します。「ステータスが「完了」に設定されているときに、現在の時刻をcompletion_dateに割り当てる」などのロジックは、最適なモデルです。

ビューには、プレゼンテーション全体が含まれます。コントローラ/モデルはHTMLを生成または処理するべきではありません。2列または3列などの決定はビューに属します。ビューのロジックは、表示可能な出力を生成するために必要なロジックに制限する必要があります。ビューからデータベースにクエリを実行したい場合は、ビューにロジックを入れすぎている可能性があります。

コントローラーは残っているもののためのものです。通常、これは、入力の検証、モデルへのフォームデータの割り当て、適切なビューの選択、およびリクエストの処理に必要なモデルのインスタンス化を意味します。

于 2009-02-24T06:59:01.483 に答える
1

ほとんどの場合、モデルごとのコントローラーのパターンに従います。複数のモデルに対応する可能性のあるコントローラーがいくつかあります (複数の管理モデルに対応する管理コントローラーなど) が、一般的なルールは、ビジネス モデルごとに 1 つのコントローラーです。

于 2009-02-24T01:15:26.877 に答える