20.3.4 Smarty模板引擎的使用
下面通过一个实例程序介绍Smarty模板引擎在PHP程序中的使用。首先定义一个简单模板文件,命名为20-2.tpl,并保存在当前目录下的template子目录下。tpl是Smarty模板文件使用的后缀名,该模板文件如代码20-2所示。
代码20-2 一个简单的Smarty模板文件20-2.tpl
01 {*这里是Smarty模板的注释*}
02 <html>
03 <head>
04 <title>{$page_title}</title>
05 </head>
06
07 <body>
08 大家好,我是{$name}模板引擎,欢迎大家在PHP程序中使用{$name}。
09 </body>
10
11 </html>
12 {*模板文件结束*}
【代码解析】{*与*}之间的部分是模板页的注释,它在Smarty对模板进行解析时不进行任何处理,仅起说明作用。{$name}是模板变量,它是Smarty中的核心组成,用左边界符“{”与右边界符“}”包含着、以PHP变量形式给出。
接下来完成显示模板的PHP程序,如下面的代码20-3所示。
代码20-3 在PHP程序中使用Smarty模板引擎20-3.php
01 <?php
02 include("./Smarty/libs/Smarty.class.php");//包含Smarty类文件
03
04 $smarty=new Smarty();//建立Smarty类的实例$smarty
05 $smarty->template_dir="./templates";//设置模板目录
06 $smarty->compile_dir="./templates_c";//设置编译目录
07
08 $smarty->left_delimiter="{";//设定左右边界符为{},Smarty推荐使用的是<{}>
09 $smarty->right_delimiter="}";
10
11 $smarty->assign("name","Smarty");//进行模板变量替换
12 $smarty->assign("page_title","Smarty的使用");//进行模板变量替换
13
14 $smarty->display("20-2.tpl");//编译并显示位于./templates下的20-2.tpl模板
15 ?>
【代码解析】代码第2行,将Smarty类新的类文件Smarty.class.php包含到当前文件中。代码第4行生成Smarty类的实例$smarty,它代表了一个Smarty模板。代码第5、6行分别设置模板文件所在目录及模板文件编译后存放目录。代码第8、9行设定了模板变量的界定符为“{”和“}”。第11、12行将模板变量替换为实际内容,最后在代码第14行显示最终用户看到的HTML视图。代码20-3的执行结果如图20-3所示。
如果转到当前目录下的子目录template_c,可以看到其中有一个由Smarty模板引擎生成的PHP文件,这个文件最终由Smarty模板引擎调用,向浏览器端输出。打开这个文件,可以看到如下所示的代码。
<html>
<head>
<title><?php echo$this->_tpl_vars['page_title'];?>
</title>
</head>
<body>
大家好,我是<?php echo$this->_tpl_vars['name'];?>
模板引擎,欢迎大家在PHP程序中使用<?php echo$this->_tpl_vars['name'];?>。
</body>
</html>
从这段代码可以看到,代码20-2.tpl中的模板变量都被Smarty模板引擎换成了PHP普通的输出数据的用法,即使用echo结构输出Smarty模板引擎获取的实际变量。从这个文件的内容,读者应该看到一点Smarty模板引擎处理模板的机制。
本小节只是举了一个很简单的例子,告诉读者Smarty模板引擎的使用方法及其实现机理,有兴趣的读者还需要通过Smarty模板引擎的官方网站,获取更多的如何应用Smarty模板引擎的知识,并在较大规模的实际应用中尝试使用Smarty模板引擎。