Smarty / views / templates中的数据库调用
-
05-07-2019 - |
题
今天在工作中,有人试图说服我:
{$obj->getTableInfo()}
适用于smarty / mvc / templating,因为它使用的是对象方法。我认为,因为它调用数据库它没有位置,它应该在控制器中(我们实际上不使用MVC)。我是否正确理解MVC中使用的逻辑分离以及模板化中的逻辑分离?或者有什么我想念的东西?
解决方案
你是对的。他错了。
如果你想正确地进行MVC,数据库调用,无论采用何种形式,都应该存在于控制器中。
很明显,人们都在为应该做什么而烦恼并做这样的事情,但这不是正确的方法。
其他提示
嗯,没有“官方”的规则或任何东西,但我认为这样的东西属于控制器。除了显示变量之外,我在视图代码中没有做任何事情,如果允许或 foreach
-type循环,则不会比复杂。当然不会调用访问数据库的函数。这应该全部由控制器加载,视图应该只决定是否需要显示它。
真的取决于它的背景和范围。
$ obj是控制器还是模型层?在我看来,这应该回答它是否有效。
回应阅读其他答案。
函数名称本身就是一个简单的getter方法。它可以通过控制器层调用db。我会说的还可以。特别是如果它在内存中使用某种形式的缓存。 (即getter是setter,因为你只想在使用一次时缓存它。)
不隶属于 StackOverflow