跳转到内容

PHP 编程/为什么要使用模板

来自 Wikibooks,开放的书籍,开放的世界

那么什么是模板呢?对于我们来说,模板是一个类似 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。

等等等等。


华夏公益教科书