将数据作为对象或数组传递给视图?

时间:2013-12-05 09:02:37

标签: php model-view-controller

所以,我需要为我的团队创建这样一个约定。当我们必须将数据从控制器传递到视图时,最好的数据类型是什么?对象还是数组?哪一个更容易管理?是否有任何已经存在的惯例?是否有任何考虑要做? 。感谢。

2 个答案:

答案 0 :(得分:2)

这实际上取决于您编程的上下文。如果您要传递可能包含多个值的内容,或者为了使用它,您需要实现一些复杂的逻辑,然后我会亲自将它包装在一个对象中。

数组示例

<?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。它更通用; 总是会产生更干净的代码,使维护和阅读更容易;更不用说将您的观点与应用程序的后端完全分离的宝贵资产。从理论上讲,这意味着您可以在不改变视图的情况下更改应用程序的整体外观,这是一个很好的接触。

缺点?有时它是不必要的,当你不需要时,你会产生开销。

答案 1 :(得分:1)

为了便于阅读和维护,我建议您传递对象。 如果您需要页面加载速度,则传递数组。