我应该发送什么类型的数据才能查看?

时间:2011-02-19 14:30:05

标签: php model-view-controller

这个问题自从我开始以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:)。

4 个答案:

答案 0 :(得分:5)

将数据发送到您的视图时,如何对数据进行格式化并不重要,只要您正在使用它,就会以某种形式显示数据。

视图分离的测试基于逻辑,而不是数据。

  • 您是否正在更改视图中的数据?

这是一个更好的问题,可以确保您的数据已准备好传递给视图。

答案 1 :(得分:1)

你可以发送阵列
以及一个对象
无论你想要什么

答案 2 :(得分:1)

将对象传递给视图非常合适。如果你开始在视图中复杂化,那么在对象中添加一个新方法,或者在控制器中执行该操作,并将新变量传递给视图。

答案 3 :(得分:1)

我创建了一个Template类,它实现了ArrayAccessIteratorCountable。这让我可以使用充当数组的嵌套模板对象。例如,我的观点可能最终看起来像:

<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'); ?>