跳轉到內容

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 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。

這只是其中一些問題。

另請參閱

[編輯 | 編輯原始碼]


華夏公益教科書