在上一节中,我们知道模板元素的一种:模板变量,并知道如何在程序中给它赋值,使之呈现我们想要的东西.这对一般的简单网页来说,或许就已经够用了.现在我们设想一稍微复杂的一种情况,在template目录下新建一个second.html模板文件,内容为:<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title> 我的第二个模板文件 </title>
</head> <body>
下面是一个列表
<ul>
<li>张三 的成绩是 82
<li>李四 的成绩是 90
<li>王儿 的成绩是 60
<li>麻子 的成绩是 77
</ul>
</body>
</html>
上面的列表中列出了"张三","李四","王二","麻子"四人的成绩.假设要用php代码嵌入html的方式输出的话,你可能是这样写的:<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title> 我的第二个模板文件 </title>
</head>
<body>
下面是一个列表
<?php
$result = mysql_query("select username,score from my_tbl");
?>
<ul>
<?php
while ($row = mysql_fetch_array($result))
{
?>
<li><?=$row["username"]?> 的成绩是 <?=$row["score"]?>
<?php
}
?>
</ul>
</body>
</html>
这样写很适合php新手,但你很快发现你或者美工改这个列表样式的时候需要多么的小心翼翼,特别是美工,如果他不懂你写得php代码,那么他会终日生在恐惧之中!因为稍微的不小心,可能就会带来程序的运行错误.而且如果他想把这个列表从一个地方移到另一个地方,也是相当不容易的.于是作为程序员的你不得不把美工(虽然你做的可能性更大)修饰过的页面重新审查一次,无形中就造成费时费力。
现在好了,有了template模板类,你可以把你的代码从模板中抽取出来了.你可能会这样修改second.html模板:<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title> 我的第二个模板文件 </title>
</head>
<body>
下面是一个列表
<ul>
<li>{username1} 的成绩是 {score1}
<li>{username2} 的成绩是 {score2}
<li>{username3} 的成绩是 {score3}
<li>{username4} 的成绩是 {score4}
</ul>
</body>
</html>
显然,你采取了一个良好的命名方式,用1,2,3..来表示每一行数据,然后你在你的程序里循环给这些变量赋值,也是不难的,比如:(second.php)
<?php
//包含进模板类 template.inc
require "inc/template.inc";
//创建一个实例
$tpl = new template("template");
//将整个文件读进来
$tpl->set_file("main", "first.html");
//连接数据库,选择数据库略
省略.....
//查询结果
$result = mysql_query("select username,score from my_tbl");
//给文件中的模板变量赋值