PHP 程式設計/為什麼使用模板
外觀
< PHP 程式設計
(重定向自 PHP 程式設計/whytemplating)首先,什麼是模板? 就我們的目的而言,模板是一個類似 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。
這只是其中一些問題。