科哈纳 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())
.
我是 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())
.