不,你的做法是錯誤的。
這裏是你的設計的主要缺陷:
- 你假設的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