Php 将对象分配给视图,大型MySQL结果集

Php 将对象分配给视图,大型MySQL结果集,php,mysql,smarty,Php,Mysql,Smarty,你好(对不起我的英语不好) 将对象指定给视图并在其中调用其方法是一种不好的做法吗? 我使用smarty作为模板引擎 在我的控制器中,我可以这样做 一,# 在我看来 <p>{$name}</p> <p>{$Report->getName()}</p> 在我看来 <p>{$name}</p> <p>{$Report->getName()}</p> {$Report->getName()

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

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

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

一,#

在我看来

<p>{$name}</p>
<p>{$Report->getName()}</p>
在我看来

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

我最大的问题是,我必须处理来自MySQL的大量数据,我想如果我能做一个方法,在循环MySQL\u fetch\u行的同时打印数据。至少我知道在模型中使用html标记是一件坏事

因此,我会将对象分配给视图,以便将结果放在页面上的正确位置

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


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

就MVC而言,我看到了最早使用的方法。将所有处理逻辑放在控制器中,使用视图仅用于显示,无需将处理(
{$Report->getName()}
)放在视图中。

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

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

在我看来,视图直接与模型对话没有什么错。此外,这就是经典的“三角形”MVC的工作原理。

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


至于占用太多内存。。。在一页中发布的数据量不太可能占用太多内存。我认为,在内存出现问题之前,用户界面就会出现问题(一个页面中的内容太多)。无论如何,为什么不尝试一个简单的基准测试呢。您可以使用PHP的memory\u get\u usage()函数来实现这一点。

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

至于占用太多内存。。。在一页中发布的数据量不太可能占用太多内存。我认为,在内存出现问题之前,用户界面就会出现问题(一个页面中的内容太多)。无论如何,为什么不尝试一个简单的基准测试呢。您可以使用PHP的memory\u get\u usage()函数来实现这一点