我想知道 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/