0

我真的看不出这些之间的区别。模板如何更好?我不只是不理解它,或者我如何说服别人使用它。我理解关注点的“分离”,但我没有遇到大问题。第一个示例不是<li>像一个echo那样生​​成多个标签吗?而且,我会使用 php 作为“模板语言”,所以我不关心 Smarty 或其他一些系统。谢谢。

为什么我应该在 PHP 中使用模板系统?

<h1><?=$title?></h1>
<ul>
  <?php foreach ($items as $item) {?>
  <li><?=$item?></li>
  <?php } ?>
</ul>

和(我在论坛中找到的一些片段作为示例):

echo "<table>";

for ($i = 0; $i < $largestArray; $i++)
{
        echo "<tr>";

        if ($i < $array1Size)
        {
                echo "<td>";
                echo $array1[$i];
                echo "</td>";           
        }
        else
        {
                echo "<td>";
                echo "null";
                echo "</td>";           
        }

        if ($i < $array2Size)
        {
                echo "<td>";
                echo $array2[$i];
                echo "</td>";           
        }
        else
        {
                echo "<td>";
                echo "null";
                echo "</td>";           
        }

        echo "</tr>";
}

echo "</table>";

或类似的东西:

<table id="working" border="0" cellspacing="1" cellpadding="3">
    <tr>
        <?php foreach ($csv->titles as $value): ?>
            <td><?php echo $value; ?></td>
        <?php endforeach; ?>
    </tr>

    <?php foreach ($csv->data as $key => $row): ?>
        <tr>
            <?php foreach ($row as $value): ?>
                <td><?php echo $value; ?></td>
            <?php endforeach; ?>
        </tr>
    <?php endforeach; ?>
</table>

编辑:这应该是一个社区维基问题吗?

4

3 回答 3

1

您的标识似乎有点混乱,但重点是第二个版本的可读性更高(例如,您可以轻松阅读标签层次结构)。可读代码是可以轻松维护或重构的代码。

仅使用 PHP 的 echo 关键字编写下面的代码不会很可读。您还会担心引号和双引号。使用类似模板的方法,您最终会得到一个看起来类似于 HTML 文档的代码。

<table id="working" border="0" cellspacing="1" cellpadding="3">
    <tr>
        <?php foreach ($csv->titles as $value): ?>
            <td><?php echo $value; ?></td>
        <?php endforeach; ?>
    </tr>
    <?php foreach ($csv->data as $key => $row): ?>
        <tr>
            <?php foreach ($row as $value): ?>
                <td><?php echo $value; ?></td>
            <?php endforeach; ?>
        </tr>
    <?php endforeach; ?>
</table>
于 2012-08-02T17:06:42.470 回答
0

模板系统如 cakephp 和 codeignitor 使用 MVC,它使代码更清晰,更符合标准。您也可以编写自己的 MVC。

于 2012-08-02T17:04:54.737 回答
0

模板系统不是表示逻辑分离的万能解决方案。它们是一种解决方案,并且被许多 PHP 框架使用。在一般“MVC”/MVA/MVP/MVVM PHP 开发中,您不希望在表示层中有任何业务逻辑。回显 HTML 是(通常)直接违反这种做法;使用模板,表示层中不存在业务逻辑,反之亦然。

回到第一点,模板是一种解决方案,而不是解决方案。表示层有很多可用的选项,很大程度上取决于您的编码风格和/或框架/库的使用。

在个人层面上,我更喜欢模板(对于大多数小型医疗项目),除了上面概述的一些原因:

  1. 使“主题化”和交换网站样式更容易。只需修改模板或实现可以加载不同模板的主题切换器

  2. 从模型到模板是一件轻而易举的事,因为模板(通常)只是带有一些 php 片段回显数据的 HTML。

  3. 模板是“愚蠢的”。他们不需要知道业务逻辑发生的任何事情,他们所关心的只是将一些数据回显到 HTML 中。

  4. 可读性。这几乎完全是个人喜好,尤其是考虑到广泛的模板语法。

tl;dr - 模板与 [在此处插入其他解决方案] 几乎完全是主观的,除非您有基于托管、客户要求、流量水平等的限制。如果是这种情况,那么找到基准以及更多关于效率和可扩展性的信息,并制作根据项目要求做出明智的决定。

于 2012-08-02T17:34:03.210 回答