你好(抱歉我的英语不好)
将对象分配给视图并在其中调用其方法是不好的做法? 我使用smarty作为我的模板引擎。
在我的控制器中,我可以这样做
1#
$this->view->assign("name", $this->model->getName);
在我看来
<p>{$name}</p>
OR
2#
$this->view->assign("Object", $this->model);
在我看来
<p>{$Report->getName()}</p>
我最大的问题是我必须处理来自MySQL的大量数据,我想如果我想制作一个在循环mysql_fetch_row时打印出数据的方法。至少我知道在模型中使用html-tags是件坏事。
所以我会将对象分配给视图,以便将结果放到页面上的正确位置..
首先将mysql-result读取到数组可能会导致内存问题,对吗?那么什么是解决MVC风格的解决方案..
是的,我正在使用自己的框架。
答案 0 :(得分:1)
就MVC而言,我已经看到了大多数使用的第一种方法。将所有处理逻辑放在控制器中,仅使用查看进行显示,无需在视图中放置处理({$Report->getName()}
)。
答案 1 :(得分:1)
从我的观点来看,直接与模型交谈的观点没有错。而且,这就是经典的“三角形”MVC应该起作用的方式。
答案 2 :(得分:1)
理想情况下,您应该使用第一种方法。不幸的是,我们不是生活在理想的世界里。如果做到这一点太痛苦,我真的没有看到第二种方法的问题。 难道不是有办法妥协吗?如果您可以将模型中列的名称作为数组获取,则可以循环遍历它们并动态地将每个值分配给smarty。这样你的视图会更简单,你可以避免控制器中的大量代码。
至于占用太多内存......你在一个页面中发布的数据量会占用太多内存似乎不太可能。我认为在你遇到内存问题之前,你会遇到UI问题(单页中的内容太多)。无论如何,你为什么不尝试一个简单的基准。您可以使用PHP的memory_get_usage()函数。