-2

我在模型中有一个名为 getThumbnail() 的函数。

如何在视图文件中调用此函数。

目前我必须使用的是:

<?php
$tmp = new Model();
echo $tmp->getThumbnail(1);
?>

有没有其他方法可以做到这一点,因为直接从 View 调用 Model 看起来不正确。

4

2 回答 2

2

如何正确地做到这一点是一个相当广泛的话题,没有一个正确的答案。但是,我肯定要指出的一件事是,在视图中实例化模型类绝对是错误的。相反,您应该:

  1. 将控制器的实例传递Model给视图,或
  2. 将“调度程序”对象从控制器传递给视图,允许视图间接调用任何或某些模型函数,例如:

    echo $dispatcher->dispatch('Model', 'getThumbnail', 1);
    

    如果此调度程序允许的模型方法受到限制,以强制执行适当的关注点分离,这很有意义。例如,视图不应该进行任何修改模型中状态的调用,比如User::createNewUser或类似的。视图应该只允许调用“被动”模型方法来获取数据。

这里的要点是您希望将依赖项注入视图,而不是直接硬编码特定的模型调用。这几乎适用于任何依赖关系,而不仅仅是视图模型关系。

于 2013-10-22T14:44:35.680 回答
1

从视图调用模型不是一个好主意。

视图是控制器的仆从。模型应仅从控制器进行通信。

于 2014-03-29T20:10:30.640 回答