0

我不确定哪个标题更具描述性,所以我保持这种方式。我觉得有点迷失在 MVC 的世界里。

仅供参考:我使用 PHP,但在这种特殊情况下这似乎并不重要。

我的问题如下:

我有一个包含以下方法的 UserController:

  • 登录
  • 新的
  • 显示
  • 概述

然后我有我的 UserModel,包含 - 在这种情况下 - 大致相同的方法:

  • 登录
  • 创造
  • 拿来

问题是:一旦从数据库(或 XML 提要、Web 服务或其他...)中获取我的用户数据,我该如何保存?我想到了一个用户“业务对象”,其中包含数据库中的所有(相关)属性。然后,当从数据库中获取用户时,我为我获取的每个用户实例化一个新的用户对象。如果只有 1 个用户从搜索中返回,我只返回 User 对象。如果返回更多用户,我会实例化一个包含所有用户对象的 UserCollection 对象——在这种情况下,我可以迭代它们,等等。

这是在 MVC 中与用户打交道的正确方法吗?

然后:假设我对 10 个用户进行了概述。其中 5 个被一次编辑 - 想象一下使用复选框修改状态。如何处理更改?我是否遍历所有更改的用户对象并将它们存储回数据库中?然后它会开始看起来像是 Active Record 模式的实现,我被告知不要使用它。

我希望有人能澄清我需要哪些类和/或方法来解决这个“架构”问题。

4

2 回答 2

0

因为这是一个相当冗长的讨论。我将给出我在 MVC 上写的一篇文章的链接,试图用简单的术语来解释它。你可能想看看它。

MVC 模式是关于什么的?

于 2012-06-08T03:10:40.653 回答
-1

如果我理解正确,您的 UserModel 有点不对劲;
MVC 的模型部分旨在作为现实世界模型的编程表示。
含义-它代表了现实世界主体的所有属性动作。经典的例子是Car类,它具有诸如 ,Wheel之类的属性和诸如等之类CurrentSpeed的动作。 GoForward()GoReverse()

因此,就您而言,我认为您的模型应该是您所描述的“用户业务对象”。
您的控制器将负责UserModel从存储(或任何地方)获取 s,并将它们更新回来。

您的工作流程将是这样的:
View将调用Controller's GetUsersController进入存储,并获取UserModels 的列表。
Controller将它们返回到视图。
View以某种方式显示它们。

而反过来更新。
该类UserModel将负责与单个用户相关的逻辑(例如 - ChangePassword())。

于 2012-06-07T10:04:08.970 回答