这个问题自从我开始以MVC方式编程之后,我一直在问自己。我应该发送查看填充数据的数组,还是应该将其作为我从数据库中检索到的对象发送?我的模型将数据作为对象返回。什么是创造这样的事情的最佳方式?
$new_data = $model->find_by_id(1);
echo $new_data->name;
$new_data->name= "whatever";
$new_data->save();
例如。 view.php
echo $object->name;
或
echo $array['name']
语言是php:)。
答案 0 :(得分:5)
将数据发送到您的视图时,如何对数据进行格式化并不重要,只要您正在使用它,就会以某种形式显示数据。
视图分离的测试基于逻辑,而不是数据。
这是一个更好的问题,可以确保您的数据已准备好传递给视图。
答案 1 :(得分:1)
你可以发送阵列
以及一个对象
无论你想要什么
答案 2 :(得分:1)
将对象传递给视图非常合适。如果你开始在视图中复杂化,那么在对象中添加一个新方法,或者在控制器中执行该操作,并将新变量传递给视图。
答案 3 :(得分:1)
我创建了一个Template
类,它实现了ArrayAccess
,Iterator
和Countable
。这让我可以使用充当数组的嵌套模板对象。例如,我的观点可能最终看起来像:
<h1><?php echo $template['title']; ?></h1>
<?php foreach($template->post as $post): ?>
<h2><?php echo $post['title']; ?></h2>
<p><?php echo $post['body'] ?></p>
<?php endforeach; ?>
我甚至可以调用新页面,具体取决于哪些视图文件与不同的模板相关联:
<?php if($template->canRender('comments')): $template->comments->render(); endif; ?>
这种方式非常有用。我甚至开始添加格式化方法,通过强制Template
对象中的所有数据充当TemplateData
对象,为简单起见,它们有各种格式化方法:
<?php echo $template['secret_code']->asHash('md5'); ?>
<?php echo $template['title']->asCase('capitalize'); ?>