5

我正在使用 MVC 框架(特别是 PHP 的CodeIgniter)。我试图尽可能地遵循“最佳实践”,但我对 MVC 没有太多经验。从控制器中的会话中检索数据对我来说是不好的做法吗?我应该“询问”模型,比如说,一个特定的会话值是 'foo' 还是 'bar',还是应该直接在 Controller 中这样做?我想我应该在模型内部进行,因为会话数据在技术上是数据,但我只是想确定一下。需要明确的是,我根本不将会话数据存储在数据库中,所以我没有运行查询。

4

1 回答 1

3

模型通常处理持久化到某种长期存储的所有域对象。它们中可能有也可能没有与特定应用程序对它们的使用有关的瞬态值。

控制器应该查询他们需要的任何数据,以便正确路由和显示信息。它可能有助于创建一个直接在域对象(您的模型)上操作的“服务”层,并提供一个供控制器使用的 API。控制器中不包含的主要内容是业务逻辑。

例如,对于控制器来说,获取引用页面并对用户流相关的数据执行某些操作是合理的。然而,除了验证之外,它可能不应该检查账户之间转移的金额——它应该只是将其传递给一个服务对象,该服务对象实例化并使用正确的域对象。

关于您要放入控制器的逻辑的问题:

  • 这个逻辑是否有助于弄清楚我需要什么模型对象?如果不是,它不应该在这里。
  • 此逻辑是否有助于确定将使用哪些 View 对象来构建对用户的响应?如果不是,它不应该在这里。
于 2012-07-18T21:50:59.030 回答