php - MVC : Should the view always receive arrays instead of objects?

标签 php model-view-controller zend-framework doctrine

我想知道 View 是否应该传递对象或者它们应该只接收数组。我正在使用 ORM 框架。因此,在项目 View 页面中,我可以将 View 传递给项目对象并让它渲染出项目的待办事项列表和待办事项吗?

所以目前在我看来我有这样的代码:

foreach ($this->project->getTodoLists() as $todoList) {
  // render lists
  foreach ($todoList->getTodos() as $todo) {
    // render todos
  }
}

这样可以吗?我认为,通过 Doctrine 的延迟加载,它会在调用 get*() 时运行 SQL。这里重要吗?

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

我正在使用 PHP、Zend Framework 1.11、Doctrine 2 ORM。但我认为使用什么并不重要

最佳答案

使用非惰性数据类型(即数组)进行 View 渲染的一个优点是不会出现任何失败。例如,如果读取对象的值并触发调用最终失败的函数(数据库问题、内存不足等),则 View 渲染可能会损坏(HTML 文档中的 IE 错误消息)。当您将数组传递给 View 时,访问什么数据或以什么顺序访问并不重要,因为它是预渲染的。

虽然这个问题大部分可以通过输出缓冲来解决,但有些东西(例如 fatal error )无法被捕获,并且会泄漏到页面上。

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

最终,这取决于您希望 View 的复杂程度。简单数据结构 -> 简单 View ,反之亦然。

关于php - MVC : Should the view always receive arrays instead of objects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4765660/

相关文章:

javascript - 如何使嵌入 View 中的 Ember 组件中的数据绑定(bind)起作用?

python - 具有不同类型问题的 Django 测验应用程序

php - 请帮助确定我的应用程序中的 MySQL 性能瓶颈

php - 为什么 XAMPP 不适合生产?

php - 解析 url 并使用最后一个斜杠后面的部分

php - 使用 View 或不使用 View

php - 让 PDO 工作

javascript - Zend Framework CSS/JS minifier-obfuscator?

php - 在 Zend_Form 中,如何避免 Zend_Validate_Email 产生多个错误?

javascript - zend加载js文件顺序