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

{$obj->getTableInfo()}

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

有帮助吗?

解决方案

你是对的。他错了。

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

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

其他提示

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

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

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

回应阅读其他答案。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top