跳转到内容

PHP 编程/为什么使用模板

来自维基教科书,开放的书籍,为开放的世界

首先,什么是模板? 就我们的目的而言,模板是一个类似 HTML 的文档,它定义了网页的展示方式,而 PHP 脚本则提供内容。 内容和展示的分离是任何GUI 范式的核心。 为了了解为什么这是可取的,请考虑以下假设但现实的脚本。 这是一个从数据库中检索书籍列表并将其显示为表格的脚本,表格中每行都有交替的颜色,或者如果列表为空,则显示“未找到书籍”。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
<html>
   <head>
      <title>List of Books</title>
   </head>

    <body>

<?php
$books = new Array();
$i = 0;

$database = open_database();
if (is_null($database)) {?>
    <h1>Error opening database</h1>
    Please contact the system administrator at [email protected] and report the problem.
    </body>
    </html>

<?php
    exit();
}

$result = $database->query("SELECT ISBN, title, author FROM book");
while ($row = $result->retrieveAssoc()) {
    $books[] = $row;
}?> 

    <table>
        <?php
        if (count($books) == 0) {
            echo "<tr><td>No books found</td></tr>";
        }
        else {
            foreach ($books as $book) {
                if ($i % 2 == 0) {
                    echo "<tr bgcolor='#EEEEEE'>";
                } else {
                    echo "<tr bgcolor='#FFFFFF'>";
                }
                $i++; ?>
                <td><?php echo $book['ISBN']; ?></td>
                <td><?php echo $book['title']; ?></td>
                <td><?php echo $book['author']; ?></td>
                </tr>
        <?php
            }
        }?>
    </table>
</body>
</html>

你很快就会发现自己编写了这种类型的脚本。 这种脚本的问题很明显

  • 这个 PHP 页面实际上是两个页面,一个用于错误消息,另一个用于正常显示。 令人困惑。
  • 即使是对于正常显示部分,PHP 脚本也做了两件事:准备数据并格式化它,例如,每行的交替颜色。
  • 看看 PHP 和 HTML 代码是如何纠缠在一起的。 好的缩进变得几乎不可能,这使得代码难以阅读。
  • 如果你的老板现在想要一个列表而不是一个表格怎么办? 你将需要为此修改你的 PHP 代码。
  • 现在你的老板想要一个更花哨的错误页面,至少需要 300 行 HTML 代码,你还能分辨出第一个“页面”在哪里结束,第二个页面在哪里开始吗?
  • 如果你想让你的图形设计师对你的页面进行任何美学上的修改,你可能需要教他 PHP。

这只是其中一些问题。

另请参阅

[编辑 | 编辑源代码]


华夏公益教科书