【问题标题】:Assigning Object to View, big MySQL resultset将对象分配给视图,大型 MySQL 结果集
【发布时间】:2010-04-15 10:24:37
【问题描述】:

你好(对不起我的英语不好)

将对象分配给视图并在其中调用其方法是不好的做法吗? 我使用 smarty 作为我的模板引擎。

在我的控制器中我可以这样做

1#

$this->view->assign("name", $this->model->getName);

在我看来

<p>{$name}</p>

2#

$this->view->assign("Object", $this->model);

在我看来

<p>{$Report->getName()}</p>

嗯,我最大的问题是我必须处理来自 MySQL 的大量数据,我想如果我能在循环 mysql_fetch_row 时创建一个打印数据的方法。好吧,至少我知道在模型中使用 html-tags 是一件坏事。

所以我会将对象分配给视图以将结果放在页面上的正确位置..

首先将 mysql-result 读取到数组可能会导致内存问题,对吗?那么 MVC 风格的解决方案是什么..

是的,我正在使用我自己的框架。

【问题讨论】:

    标签: php mysql smarty


    【解决方案1】:

    理想情况下,您应该使用第一种方法。不幸的是,我们不是生活在一个理想的世界里。如果这样做太痛苦了,我真的不认为第二种方法有问题。 没有办法妥协吗?如果您可以从模型中获取列的名称作为数组,您可以遍历它们并将每个值动态分配给 smarty。这样您的视图会更简单,并且您可以避免控制器中的大量代码。

    至于占用太多内存……您在一页中发布的数据量似乎不太可能占用太多内存。我认为在您遇到内存问题之前很久就会遇到 UI 问题(单个页面中的内容太多)。无论如何,您为什么不尝试一个简单的基准测试。你可以使用 PHP 的 memory_get_usage() 函数。

    【讨论】:

      【解决方案2】:

      就 MVC 而言,我看到的大多是第一种方法。将所有处理逻辑放在控制器中,View仅用于显示,无需将处理({$Report-&gt;getName()})放在视图中。

      【讨论】:

        【解决方案3】:

        在我看来,视图直接与模型对话并没有错。此外,经典的“三角形”MVC 应该是这样工作的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多