我正在使用一个使用 MVC 范例的框架。它是 CodeIgniter,但我的问题不在于具体的框架 - 它更普遍地涉及使用 MVC 时的最佳实践。
我正在使用 $_SESSION 变量来维护一些状态变量(用户选择、一些临时首选项、一些数据过滤选项)。这很容易做到,但我发现我在模型和控制器之间拆分了这些变量的使用。有时我会在控制器中更新一个,然后在模型中查找它。这开始“闻起来”很有趣,因为在我看来,让模型“意识到”所有这些设置可能不是一个好主意。模型不应该只接受获取/操作数据的请求,而只关心请求中明确包含的内容(无需查找外部变量)吗?
这是一个示例: 我有一个名为 $_SESSION['regionFilter'] 的会话变量。这是在控制器中创建和更新的,代表用户想要“深入”到的销售区域。当控制器从模型请求一些数据时,我目前让模型查找 $_SESSION['regionFilter'] 变量,并在为数据库创建 SQL 时使用它。似乎让模型在程序状态方面“哑巴”可能更有意义,如果需要,让控制器以某种方式将 $_SESSION['regionFilter'] 变量捆绑到其请求中。
有什么想法吗?谢谢!
编辑: 谢谢大家的讨论。我知道有重叠的问题,但是很难找到关于该主题的一般性讨论——我对“MVC 模型程序状态”的搜索出现了大量关于 ASP.NET-MVC 特定讨论的问题,这些讨论陷入了困境细节。
我已将问题标记为已关闭。再次感谢您的想法!