0

どちらのタイトルがより説明的か分からないので、このようにしました。MVC の世界に迷い込んだ気分です。

参考までに: 私は PHP を使用していますが、この特定のケースではそれほど重要ではないようです。

私の問題は次のとおりです。

次のメソッドを含む UserController があります。

  • ログインする
  • 新着
  • 見せる
  • 概要

次に、UserModel を作成します。これには、この場合はほぼ同じメソッドが含まれています。

  • ログインする
  • 作成
  • フェッチ

問題は、データベース (または XML フィード、Web サービスなど) から取得したユーザー データを何に保持するかということです。私は、データベースからのすべての (関連する) プロパティを含む User 'ビジネス オブジェクト' を考えました。次に、データベースからユーザーを取得するときに、取得したユーザーごとに新しい User オブジェクトをインスタンス化します。検索から返されたユーザーが 1 人だけの場合、User オブジェクトのみを返します。より多くのユーザーが返された場合は、すべての User オブジェクトを含む UserCollection オブジェクトをインスタンス化します。この場合、それらを反復処理できます。

それは MVC でユーザーを扱う正しい方法ですか?

次に、10 人のユーザーの概要を作成したとします。それらのうちの 5 つが一度に編集されます。チェックボックスを使用してステータスを変更することを想像してみてください。変更を処理するにはどうすればよいですか? 変更されたすべてのユーザー オブジェクトをループして、データベースに保存し直しますか? その後、Active Record パターンの実装のように見え始めますが、これは使用しないように言われています。

この「アーキテクチャ」の問題を解決するために必要なクラスやメソッドを誰かが明確にしてくれることを願っています。

4

2 に答える 2

0

かなり長い議論なので。私がMVCで書いた記事へのリンクを、簡単な言葉で説明しようと思います。あなたはそれを見てみたいと思うかもしれません。

MVCパターンとは何ですか?

于 2012-06-08T03:10:40.653 に答える
-1

私の理解が正しければ、あなたの UserModel は少しずれています。
MVC のモデル部分は、現実世界のモデルをプログラムで表現することを目的としています。意味- 現実世界の対象のすべてのプロパティアクション
を 表します。古典的な例は、、などのプロパティと、 などのアクションを持つクラスです。 CarWheelCurrentSpeedGoForward()GoReverse()

したがって、あなたの場合、モデルは「ユーザービジネスオブジェクト」として説明したものであるべきだと思います。
コントローラーはUserModel、ストレージから (またはどこからでも) をフェッチし、それらを更新する責任があります。

あなたのワークフローは次のようになります:の
Viewを呼び出しControllerますGetUsersControllerストレージに移動し、 のリストを取得しますUserModel
Controllerそれらをビューに返します。
Viewそれらを何らかの方法で表示します。

更新の場合はその逆です。
このUserModelクラスは、個々のユーザーに関連するロジックを担当します (例: ChangePassword())。

于 2012-06-07T10:04:08.970 に答える