不,你的做法是错误的。
这里是你的设计的主要缺陷:
- 你假设的header.php将在每个页面调用来调用。这是错误的。
- 你假设header.php将永远是静态的。这是错误的。
- 你忘了为页面本身创建一个模板。
主要规则每个人都拥有由心脏学会:
没有一个字符必须被送入浏览器,直到所有的数据已经准备好了。
为什么?
- 今天是2011年。 AJAX时代。如果你的代码将不得不发送JSON数据而不是整个HTML页面呢?
- 有一件东西叫做
HTTP header
。有时我们必须发送它们。如果你已经发送了你的华丽的HTML头文件,这是不可能的。
- 它只有4页的网站。好的。想象一下,你很幸运,并得到另一个4页的网站的请求。您将只需更改模板,不要触摸引擎文件。这真是很大的好处。
- 想象一下,您将基于页面内容为您的页面创建一个自定义
<title>
标记。这不是非常普遍的事情吗?但是你不能使用模板。
所以,你必须有一个共同的网站模板,包含页眉和页脚以及每个php脚本的专用模板。
一个实例布局将是这样的:
0.1。页面本身。
它输出什么但只收集必要的数据,并调用模板:
<?php
//include our settings, connect to database etc.
include dirname($_SERVER['DOCUMENT_ROOT']).'/cfg/settings.php';
//getting required data
$DATA=dbgetarr("SELECT * FROM links");
$pagetitle = "Links to friend sites";
//etc
//and then call a template:
$tpl = "links.tpl.php";
include "template.php";
?>
0.2。 template.php
这是你的主要网站模板,
由您的页眉和页脚:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My site. <?=$pagetitle?></title>
</head>
<body>
<div id="page">
<?php include $tpl ?>
</div>
</body>
</html>
0.3。最后links.tpl.php
是实际的页面模板:
<h2><?=$pagetitle?></h2>
<ul>
<?php foreach($DATA as $row): ?>
<li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li>
<?php endforeach ?>
<ul>
简单,干净和维护。
这怎么可能是不好的做法? WordPress做到了。 '' – 2011-03-03 16:01:01