|
  
|
1#
发表于 2006-11-9 14:09
| 只看该作者
如果你正在设计一个交互式网站,你一定会关注两个主要的问题,就是美工和程序。这也是一个网站在建设中抛开其内容之后最关键的要素。通常有两种方式来协调美工和程序之间的关系:
8 l1 U; ?4 ~! @, Q 1.先做好美工页面,然后由程序员直接在美工页面的HTML文件中嵌入ASP、JSP、PHP等程序代码。
* F3 J$ L) e$ Q$ V
( t6 o, K$ h A6 M/ t( I 2.美工和程序同时进行,但这时因为没有页面框架,程序只能做出一些关键代码,双方完成后再进行一次美工页面和程序代码的嵌入合成。
* g! P. L: Y5 g1 z h8 I
& w# x$ Q' C# h4 w$ I 在实际的网站建设过程中,由于人员、进度等环境的限制,大家通常会混合地使用上面两种协调方式。然而这两种方法都有不足之处:* {, a% \ s' ~
! y2 K# u% y- K& a+ D9 J
1. 效率不高。两者协调不好可能产生等待、重复代码调试步骤等现象;/ H# A8 d% a, M: D/ I
- x1 `9 L6 u/ F 2. 调试不畅。由于程序代码最终需要嵌入在HTML页面中,代码的嵌入、调试、纠错都比较繁琐;. X3 u( F! r) h' {; d# M d6 ~' Q" N
. H `9 \( l5 W8 e: o 3. 维护不便。一旦美工设计需要修改,如网站改版,那么所有程序和HTML代码混合页面都需要重写;
) ~2 B2 f5 ]/ L
) P) |; x$ A9 V4 g t7 ^ 如果你正在使用PHP程序建设网站,那么恭喜你,PHP的模板技术会比较圆满地解决上述问题。0 y4 N9 [/ p+ {+ M
& u8 _/ H! Z! Q, A1 C; U: C
那么什么是PHP的模板技术?PHP模板即PHPlib的Template技术,是PHPLIB程序库中的一个主要模块之一,发展自Perl的Template。而PHPLIB则是在PHP上的一个扩展,提供了很多类库,能够方便地实现一些基本功能如用户认证,数据库封装等。我们可以在phplib.netuse.de上下载到其最新版本。要使用PHP模板,只需在PHPLIB的程序包中解开template.inc文件,并放到我们的PHP程序能够调用的目录里。
# e* k$ @# X3 b% H9 a8 e/ M
# | o% l1 m. K- h 剥开神秘的面纱,模板技术的核心概念简单得令人心跳:要将你的美工页面指定为模板文件,只需将页面中活动的内容如数据库输出,用户交互等部分定义成形式为{variable}的变量放在模板文件中相应的位置,当用户浏览时,由PHP程序文件打开该模板文件,将模板文件中定义的变量进行替换,当然,替换成对应的数据库输出或者用户交互等动态生成内容,举例如下:& m3 K! D3 Q/ G: d: G0 X% T# a
# n+ H1 z2 A" N5 O 定义模板文件:Mytemplate.html4 x6 v3 d* w7 _9 l
' S, V) G2 Y/ `* w* hMytemplte.html的内容为:
. U: b( v. \( ~
# X7 j( M0 C( K" Q7 K" Y* e .....1 j9 X) r+ J a3 C7 U
8 q* b7 \, n, v. G: J8 Z
...
* u% m9 d# t$ @8 o! m. j. ?( n# I# V
今天是{today} ( [5 r* D! r4 Z; j) f
- S8 Z3 a4 @2 v0 \
...4 d) d* C2 }; ~2 w; A% y
+ V8 o2 Q7 t2 e+ T( h; N
我们可以看到,事实上模板文件就是一个普通的HTML文件,它包含了你所想要的版面、美工等要素,而内部的活动内容则以变量的形式存在,并等待被替换。显然,模板文件直接被浏览是毫无意义的,因为它不包含任何PHP程序,所有的内容都是"死"的,现在我们来看看,怎样来调用模板,让它"活动"起来。
# R5 Q# ~2 r8 ]8 K
7 A7 @/ ?0 F. a/ G, i 假设我们在test.php文件中使用了上述模板,当用户浏览test.php文件时,test.php文件处理过程如下:0 g/ n: m9 t( d, |9 g
3 X* M5 M5 _2 V$ T# ^7 \
mydate=date("Y年m月d日"); //处理好变量的值- c0 L( z" B- j8 ~% H6 K5 c4 ?) w- R
$ w9 p5 F" T) S; F, H S: @
include("template.inc"); //调入将模板程序模块
5 a N, P* B% L* k+ d% j) k" u C$ J+ Z7 M1 N s1 O
mytemp = new Template("/你的模板文件所在目录/"); , d( l, o: E8 h9 V: W( c
, U8 {+ g+ S, w3 K, ^ //创建一个模板实例mytemp,如果模板就在当前目录,那么使用"."就可以
1 g5 Y9 `; A9 d6 M2 {3 I
( w, S5 Y5 H! {! R8 g' l# r mytemp->set_file("MyFileHandle","MyTemplate.html"); `& h- U# L) u0 `7 I
* J+ `% d! C% o6 F6 p U
//设置MyFileHandle文件句柄指向我们所要调用的模板文件Mytemplate.html, g- S9 J4 A- O
5 M2 f U5 D7 c4 ]2 n
mytemp->set_var("today", mydate);
! M9 v% Y+ u! u+ R9 {. ^4 @: t- c! s# @ I+ s7 b
//调用模板的set_var方法,设置模板中的变量today值为$mydate
8 T0 [/ I% C( f- v, Y" R, E" q9 s1 \, r1 v" M
mytemp->parse("MyOutput","MyFileHandle");
# }+ }- }9 l: u# L6 c9 s7 h: E7 g/ i& C6 b
//调用模板的parse方法,对MyFileHandle文件句柄所指向的模板文件进行分析,替换其中相应变量
* B. O* D b" i: u' s: r! U! L7 V4 N1 z/ \) g' G- Q/ N
//并把替换结果即完整的HTML文件内容保存在字串变量MyOutput中( Z! {( H' t) |( W2 {+ m
$ j* N+ o% h, Z; E( n mytemp->p("MyOutput");
1 K d5 P6 f9 J1 J% X3 z/ n- N& o8 `9 ?( |, V* Y7 K' ]
// 打印输出结果字串变量MyOutput的值 ?>
5 g3 U2 O* R E$ S- [# B
5 @: H( |, L1 Q: u 就是这么简单,模板技术很轻松地把网站设计分离成了清晰的美工和程序两个方面,并把他们的成果简单方便地结合了起来。如美工设计需要修改,那么我们只要记住原模板中各个变量名,把他们插入到新模板中对应位置就可以了。真的很轻松!另一方面,在PHP程序中基本没有了PHP脚本和HTML语法混合的现象,很大地提高了PHP系统的执行效率,而且如果是数据库等一些费时的操作,现在可以很及时地关闭数据库,释放资源,这样也在一定程度上提高了PHP和相关系统的资源使用效率。, A: m4 N6 z; i0 H6 r
) g# [; d7 d, m 好了,关于PHP模板技术的基本概念就介绍到这里,下次我们再介绍更高层的模板应用! |
|