跳轉到內容

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 alice@wonderland.com 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。

等等等等。


華夏公益教科書