因此,我需要为我的团队创建这样一个约定。当我们必须将数据从控制器传递到视图时,要使用的最佳数据类型是什么?对象还是数组?哪一个更容易管理?有什么惯例已经存在了吗?有什么需要考虑的吗。谢谢
它实际上取决于编程的上下文。如果你要传递可能包含几个值的东西,或者为了使用它,你需要实现一些复杂的逻辑,那么我个人会把它封装在一个对象中。
阵列示例
<?php
for($i = 0; $i < 10; $i++) {
?>
<p><?php echo $arr[$i]; ?></p><?php
}
?>
正如您所看到的,您在视图中所做的一切都是显示它(正如您应该做的那样)。在我看来,这意味着数组很好,因为你有一个简单的数组代码,而输出的复杂性并不能证明对象的开销是合理的。
对象示例
<?php
for($i = 0; $i < 10; $i++) {
?>
<p><?php echo $titles[$i]; ?></p>
<p><?php echo $subHeadings[$i]; ?></p>
<p><?php echo $paragraphs[$i]; ?></p>
}
?>
正如你在这里看到的,一个物体可能会让这件事变得更愉快。假设我们把它封装在一个Section
对象中。
class Section {
protected $title;
protected $subHeading;
protected $paragraph;
function __construct($title, $subHeading, $paragraph)
{
this.title = $title;
this.subHeading = $subHeading;
this.paragraph = $paragraph;
}
function __toString()
{
return "<p>this.title</p>
<p>this.subHeading</p>
<p>this.paragraph</p>";
}
}
然后你所需要做的就是循环并做一些类似的事情:
<?php
for($i = 0; $i < 10; $i++) {
?>
<p><?php echo $sections[$i]; ?></p>
}
?>
我的推荐
如果你想安全起见,可以选择Object
。它更通用;将总是导致更干净的代码,并使其更易于维护和阅读;更不用说将视图与应用程序后端完全解耦这一宝贵资产了。理论上,这意味着你可以在不改变视图的情况下改变应用程序的整个外观,这是一种很好的方式。
不利的一面?有时这是不必要的,当你不需要的时候,你会招致开销。
为了可读性和维护性,我建议您传递对象。如果您需要页面加载速度,则传递数组。