我正在开发这个访问模型层中会话变量的应用程序。这似乎是错的,但我愿意被证明是错的。也许没有错,但是在应用程序的大多数地方,会话变量在控制器中处理并作为参数传入,但在其他地方,会话值只是被访问。我错了,这似乎是不好的做法吗?
编辑: 我不喜欢模型中的会话的一个原因是它似乎使测试更加复杂。保持它只是params传递给函数然后记录集传回。
THX
答案 0 :(得分:4)
取决于。
我对此的看法是这样的:
一个例子是基于会话的购物车。我的购物车对象是我的会话数据的模型。
答案 1 :(得分:2)
控制器shd在使用其中使用该会话的模型之前是否存在检查天气会话。
答案 2 :(得分:0)
会话变量中存储了什么?如果它只是'登录? Y / N',那么他们可能不需要成为模型层的一部分。但是,如果它比这更复杂,它们可能与您的商业模式密不可分,应该这样对待。
Zend Test文档底部的示例显示了如何使用登录功能测试完整的MVC。据推测,在测试模型时你可以做同样的事情吗?
答案 3 :(得分:0)
不,不应该。存储类型应与业务逻辑分开。例如:
我有一个简单的插件,可以执行访问检查并将用户对象放在注册表中。因此,模型可以访问注册表,而不是访问会话,这是明确定义的。
$User = Zend_Registry::get('User'); // User model object
从理论的角度来看,应该通过数据映射器访问所有内容。将来,如果您从会话存储更改为其他内容,则需要在一个位置更新它。您的模型无需知道数据来自何处。
如果您要获取数据的路径不止一条,那么当您的应用程序变大时,这可能会导致一些问题。
OOP和分层系统方法建议是创建专门的对象和层,并保持简单,防止特定操作遍布整个代码。
但是,除非你看到优势,否则你不需要改变它。 请记住,有时重构比尝试预测一切更有效。