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