Smarty / views / templates中的数据库调用

时间:2009-05-05 03:18:53

标签: php model-view-controller smarty templating

今天在工作中,有人试图说服我:

{$obj->getTableInfo()}

适用于smarty / mvc / templating,因为它使用的是对象方法。我认为,因为它调用数据库它没有位置,它应该在控制器中(我们实际上不使用MVC)。我是否正确理解MVC中使用的逻辑分离以及模板化中的逻辑分离?或者有什么我想念的东西?

3 个答案:

答案 0 :(得分:5)

你是对的。他错了。

如果你想正确地进行MVC,数据库调用,无论采用何种形式,都应该存在于控制器中。

很明显,人们都在为应该做什么而烦恼并做这样的事情,但这不是正确的方法。

答案 1 :(得分:1)

嗯,没有“官方”规则或任何东西,但我认为这样的东西属于控制器。除了显示变量之外,我的视图代码中没有做任何事情,只允许使用ifforeach类型循环。当然不会调用访问数据库的函数。这应该全部由控制器加载,视图应该只决定是否需要显示它。

答案 2 :(得分:0)

真的取决于它的背景和范围。

$ obj是控制器还是模型层?在我看来,这应该回答它是否有效。

回应阅读其他答案。

函数名称本身就是一个简单的getter方法。它可以通过控制器层调用db。我会说的还可以。特别是如果它在内存中使用某种形式的缓存。 (即getter是setter,因为你只想在使用一次时缓存它。)