9 a- D7 X5 n4 q+ }, z: ^/ l( K : u; f6 F% n$ \& V$ L, [4 x3 V" |第一章 如何进行安装配置% Y9 y$ U1 y4 v: |. k
3 S2 Q( \& t, U
PHP世界中比较流行的模板处理工具有PHPLIB Template和FastTemplate两种。据笔者看有关资料介绍,PHPLIB Template的技术易用性和速度较为理想,所以俺就学习使用了PHPLIB Template。: [4 }6 w5 i' i. r: e1 E- y
( c `: E* b" p$ v7 i3 `4 Ephplib template 的安装其实非常简单。现在说简单,呵呵,其实刚开始上手的时候竟然花了好几天的功夫才知道大概是怎么一回事儿。那我们首先来认识一下phplib吧。, C5 ]% C6 y0 C
9 m3 C. O/ O1 a3 s0 ^: b" \
随着php的应用和推广,众多开发人员和很多爱好者在php的基础上开发了很多php的程序库,这些程序库大大简化了程序设计和提高了代码的可重用性。其中phplib就是这些库中相当优秀的产品。phplib有五大功能:将数据库驱动和对数据库操作完全分离;支持session;权限许可;模板;购物车。我们要用的模板功能只是phplib这个库的诸多功能中的一种。笔者刚开始看phplib 的网方官站 ,就看得一头雾水,怎么还有数据库、session等等,最后才明白原来俺需要的只是template。 4 J: o! W8 @3 l8 k . S7 `6 M1 _2 M0 B$ |要说安装,其实就是下载phplib库文件。你可以到phplib的官方网站下载最新的版本:http://phplib.sourceforge.net 这是一个 tar.gz 压缩包,下载完之后就是解压了。打开解压后的文件夹,里边有一个php文件夹,将该php文件夹复制到任何你想要的其它位置,但不要放在网页 服务器的目录下。比如:我的网页服务器根目录是:/var/www,我可以将php文件夹放在/ var下,与www文件夹平行。然后打开php的配置文件php.ini进行编辑。更改include_path,使其指向刚刚复制的php文件夹的位置。比如:include_path = ".:/var/www/php"。phplib的官方站quick guide to installation讲了十个步骤,我们只用phplib template这一项功能的话,其它的安装步骤其实根本不用理会。保存退出,重启 apache2服务。然后就可以尝试编写你的第一个模板页了。 ; n* o) m" }( G, ]+ h K- j" J( e p 6 B' J# p7 C+ `6 h. Y. y$ e& L7 L7 E# { 9 @' ^2 o8 f8 J; F
1 U. H; [8 Z# E第二章 第一个简单的模板页8 p; q" I& I* d! \" e: i
8 W1 L2 ]% S0 f. c; s( c' N5 ]' z- q6 g5 ]我理解,所谓"模板",就是将界面和实现代码分离开来,这样做的目的一是将美工和程序员的工作分离开来,提高工作效率,二是方便维护。下面我们就开始尝试写一个简单的模板了,文件名first.htm。; A4 o$ z) l1 I+ T$ \) J
7 i' q9 n3 X- e7 C& m4 [# o. d
<HTML> $ g( A" A3 e) }7 X7 b<HEAD> 6 p5 }4 j! `& l<TITLE> 我的第一个模板文件 </TITLE>) r7 \/ M/ M/ k; F1 d- A
</HEAD> " \ P- Y2 W( b% O( ~3 |. @<BODY> 7 G u2 N* V- N8 |你知道吗? {man}真是一个好人。/ L- J: N/ f" \# s: ~4 F
<font color="#0000FF"> 作者:{author}</font>* ]+ V7 q2 O+ x1 p2 e9 a f
</BODY>6 }- O6 g* h4 \9 l
</HTML>6 k; X0 I3 v" h1 A! ^; x
; t2 I: q5 K dfirst.html模板中的{man}{author}{date}可以称为"模板变量",用花括号({})括起来。- S0 J1 o k$ b9 F
, u. Q8 W2 U+ D
上面我们定义三个变量的原因是我们想随时改变它们的值,下面我们就来做这个工作。新建first.php文件,内容如下:7 j$ g, c$ ]8 Y+ Z* u+ G
2 K1 m8 }' J, V$ A8 [<?php ( \( F8 Q+ y- l8 v" X1 Y7 O' D. xinclude ('template.inc'); //包含进模板类 template.inc6 s$ g" O8 E2 `) }+ @& m% c9 E
$tpl = new Template; //创建一个新模板 # k6 M* n1 ~8 n, r8 J/ X% G$ {$tpl->set_file('main', 'first.html'); //把模板文件加载进来! S p" J& ?8 `- n, d
$tpl->set_var('man', 'fuyatao'); // //给文件中的模板变量赋值 7 ~) s2 d% Z$ K$tpl->set_var('author', 'fuyatao'); ) L4 J* R6 T" ~* @8 x$ y( g$tpl->parse('mains', 'main'); // //完成替换8 `1 G |0 G3 k- C' X" x
$tpl->p('mains'); // //输出替换的结果 + f$ d9 d. c+ m: b+ V! C+ x?>5 i; ~3 E* b5 M/ g! t w" w
% k+ k% i. ]# `2 E' G( |1 [" j你也可以一次完成给变量赋值,这样 8 y' K. s& i* Z6 h9 e4 e8 C$tpl->set_var(& |. y2 }8 V6 Y4 C% O9 a. ^/ [: X# e
array('man'=>'fuyatao', 'author'=>'fuyatao')4 ^1 |" c. `) C8 _" v
); 3 j4 Y6 n" {" V& ^" h* g8 E4 Z. Q2 ]
浏览器中浏览这个文件,你就会发现输出:你知道吗?fuyatao真是一个好人。作者:fuyatao. 9 [4 t) H! e+ i! Q , J( F/ u' l4 X" g0 q2 M; N初次尝试还算顺利吧?如果没有如你所愿地看到上述文字,那一定是你哪里弄错了。浏览器会有提示。还有如果你将这些代码复制到本机不能正确执行,有可能是标点符号的问题,必须用英文的标点符号,程序中用中文的引号或分号都会引起程序不能正常运行,本人就曾经吃过这个亏,反复检查程序没有错,可就是执行不了,后来才发现是一个地方用错了标点。 6 M. @! L8 y G# T2 b: `+ v
% ?6 y' x) ^' I$ g3 _
7 s6 H6 s5 ]3 d) I8 X. |) c0 @& k) U; Y
第三章 稍复杂点的应用 5 S8 Q7 h m3 P! B; l$ L0 q6 L& H( n; p
现在我们设想稍微复杂一点的情况,新建一个second.htm模板文件,内容为: : ^+ }/ {2 @. O2 j) H8 |) E<HTML>8 o5 d5 {( }0 Y. ^0 |, a$ E
<HEAD> / v4 C7 j9 u* b3 e" C8 H$ Y<TITLE>第二个模板文件</TITLE> 8 W- D0 D6 I* z</HEAD> <BODY> : D3 S+ f3 K* a1 U, I下面是一个列表 8 T! K/ E" E& C& D3 F<UL> 7 V# {9 n7 b6 C) h+ O9 b<li>谷军涛 的身高是 170cm5 q7 ]. M$ G: o1 b `6 x2 W/ T; ?
<li>武剑 的身高是 171cm: O# x G9 V' i/ V
<li>青竹 的身高是 180cm' J, x E$ N& J
<li>王聪聪 的身高是 172cm+ `* P/ S1 ~+ n2 X: j5 n( P+ }
</UL>. p2 C$ B4 W9 U6 r7 v2 F
</BODY> $ E1 a0 ], D* F1 K' [$ p</HTML> & O3 x- G# I# f8 M - {. H$ v8 p2 O2 B以上页面是纯静态的,假设要使用数据库,用PHP代码嵌入HTML的话,是这样写的:% l( B9 ?4 J/ R+ I4 ?+ w
<HTML> * s9 J: o( l* V<HEAD> " Y# `; A* k& {% ^<TITLE>第二个模板文件</TITLE> 5 n. t5 K9 D: u& y</HEAD> <BODY>7 p$ _' H- q( ]! l6 r+ T% `8 ^6 a
下面是一个列表 ; e5 T/ M5 a0 y9 D8 Q& h<?php$ b+ B# z. z% {3 X# w' H. D
$link=mysql_connect('localhost','fuyatao',' passwd'); 4 W$ ~. s, Q- s3 \, `' h4 E0 _$result=mysql_db_query('gfs','select name,tall from my_table'); + R+ T/ X9 c9 h/ g5 x# M7 _4 iecho "<UL>";6 O8 a: I% h0 j, B% }! p- Q" A2 `
while ($a = mysql_fetch_array($result)){ & Y5 M g/ u+ e9 u/ z# Aecho "<li>$a[name]的身高是$a[tall]"; " ?- q' e: R/ d2 [! o} ( s b/ N6 l$ I, b/ p1 I?> - X6 Y' @1 `; l</UL> ( ]' T7 {/ z7 }/ B% J$ d5 V; j `$ P</BODY>" g" S z- N( i8 L2 A n
</HTML>! r4 I! @3 R& N& R4 v
: E0 j8 j7 w. H0 Z! B
7 D x" |' `, h Z' G3 z: f$ WPHP新手一般都这样写,但你很快发现:你或者美工改这个列表样式的时候需要多么的小心翼翼,特别是美工,如果他不懂PHP代码,那么他会终日在恐惧之中!因为稍微的不小心,可能就会带来程序的运行错误。对于页面的维护来说,非常不方便。即便是你自己写的代码,过一段时间你也可能有所遗忘,修改起来一样要备加小心。: D9 x/ Q: j. n1 X, u! v
% r* \2 w$ H2 W/ P现在有了模板,你可以把PHP代码抽取出来。 我们可以这样修改second.htm文件。 1 B- d% q* b9 N) o9 [/ U4 l $ b5 Q8 a& M9 r* q* x1 L& Z7 Z<HTML>" f @0 V, p% R, b$ p. A
<HEAD>- A, L6 l" m; I# |: ]
<TITLE>第二个模板文件</TITLE> + o* o& ]% T' n% i. Z( p1 x: a</HEAD> <BODY> * G. H3 h5 V# v下面是一个列表! x8 }2 ^: \7 f0 f/ R9 {; ]# \
<UL>1 M: K+ L2 b( ?
<li>{ name1} 的身高是 {tall1}% w- j; w c5 f+ m, @8 h' M& D
<li>{name2} 的身高是 {tall2}1 R/ p6 E( R1 z" F7 E
<li>{name3} 的身高是 {tall3}) ]$ T2 f& P6 X J7 C; T
<li>{name4} 的身高是 {tall4} 9 w$ L- ?$ e' a7 R% [6 f# f</UL>, z* e9 V2 k; Z, `3 c4 J9 e/ t
</BODY>& @, x1 U. n" w% G# ?. b6 z" V6 d
</HTML>/ Z& P1 M1 k1 h7 b0 T. z