我在模型中有一个名为getThumbnail()的函数。
如何在视图文件中调用此函数。
目前我必须使用的是:
<?php
$tmp = new Model();
echo $tmp->getThumbnail(1);
?>
还有其他方法可以实现这一点,因为直接从View调用Model看起来并不正确。
答案 0 :(得分:2)
如何正确地做到这一点是一个相当广泛的话题,没有一个正确的答案。但是,我必须指出的一件事是在视图中实例化一个模型类肯定是错误的。相反,你应该:
Model
的实例从控制器传递到视图,或将“dispatcher”对象从控制器传递给视图,该视图允许视图间接调用任何或某些模型函数,例如:
echo $dispatcher->dispatch('Model', 'getThumbnail', 1);
如果这个调度员允许的模型方法受到限制,那么很有意义,可以实现关注点的合理分离。例如,视图不应该进行任何修改模型状态的调用,例如User::createNewUser
或其他类似的调用。该视图应仅允许调用“被动”模型方法来获取数据。
此处的主要观点是,您希望将依赖项注入视图,而不是直接对特定模型调用进行硬编码。这几乎适用于任何依赖,而不仅仅是视图模型关系。
答案 1 :(得分:1)
从视图中调用模型不是一个好主意。
视图是控制器的爪牙。模型只能从控制器传达。