MVC:视图是否总是接收数组而不是对象?

Jie*_*eng 2 php model-view-controller doctrine zend-framework

我想知道View应该传递对象还是应该只接收数组.我正在使用ORM框架.因此,在项目视图页面中,我可以将视图传递给项目对象,并让它呈现项目的todoLists和todos.

所以目前在我看来我的代码如下:

foreach ($this->project->getTodoLists() as $todoList) {
  // render lists
  foreach ($todoList->getTodos() as $todo) {
    // render todos
  }
}
Run Code Online (Sandbox Code Playgroud)

这个可以吗?我认为使用doctrine的延迟加载,它会在get*()调用时运行SQL .这有关系吗?

或者我应该在我的控制器中将所有必需的信息解析为纯数组?

我使用PHP,Zend Framework 1.11,Doctrine 2 ORM.但在我看来,我使用的并不重要

Ken*_*ins 5

使用非延迟数据类型(即数组)进行视图渲染的一个专业人员是没有任何失败.例如,如果读取对象的值并触发要调用的函数,该函数最终失败(db,内存不足等问题),则视图呈现可能会损坏(HTML文档中的IE错误消息).将数组传递给视图时,访问哪些数据或以何种顺序进行预渲染无关紧要.

虽然这个问题可以通过输出缓冲来解决,但是某些事情(例如致命错误)无法被捕获并且会泄漏到页面上.

当然,在像PHP这样的语言中,懒惰可以帮助减少内存峰值(因为它根据需要进行分配然后再渲染)和CPU使用率(如果你最终没有评估所有对象).

最后,它归结为您希望您的观点有多复杂.简单数据结构 - >简单视图,反之亦然.