科哈纳 ORM。在视图中使用模型对象

Kohana ORM. Usung Model object in View

我是 Kohana 和整个 ORM 方法的新手,无法在任何地方找到此代码在 ORM 中是否可接受。 所以,这个函数来自模型returns一个对象

public function get_comments()
{
    $comments = ORM::factory('comment')->find_all();
    if ($comments)
    {
        return $comments;
    }
    else
        return array();
}

控制器将此对象发送到视图

$content = View::factory('/index')
         ->bind('comments', $comments);
$comments = Model::factory('comment')->get_comments();
$this->response->body($content);

问题是:我可以像这样在视图中使用模型中的对象吗:

 <?php foreach($comments as $comment): ?>
      <div>
          <h5><?php echo HTML::chars($comment->user->login); ?>:</h5>
          <?php echo HTML::chars($comment->text); ?>
      </div>
 <?php endforeach; ?>

它在 ORM 中是否可以接受,或者我应该以某种方式从对象创建一个数组并将其发送到 View? 谢谢

Is it acceptable in ORM or should I somehow make an array from object and send it to View?

这完全取决于您的喜好。

就我个人而言,我将它们作为 ORM 对象保留在视图中,并注意不要在我的视图中执行除读取访问之外的任何操作。

如果您在更大的团队中工作,并且希望确保除了从视图中读取模型之外没有人做任何事情,您可以使用 json_encode/decode 轻松地将它们转换为数组或简单对象:

$simple_comments = json_decode(json_encode($comments)).

json serialization/unserialization 对于大型对象集可能会很慢,在这种情况下你可以使用 ORM 的 as_array 方法:

$comments_as_arrays = array_map(function($c) { return $c->as_array(); }, $comments->as_array()).