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 [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。
这只是其中一些问题。