Smarty模板技术
Smarty是PHP的一个模板引擎,是众多PHP模板中最优秀、著名的模板之一。
什么是Smarty
Smarty是一个使用PHP编写的PHP模板引擎,它将一个应用程序分成两个部分实现:视图和逻辑控制。简单地讲,就是将UI(用户界面)和PHPcode(PHP代码)分离,这样程序员在修改程序时不会影响页面设计,而美工在重新设计或修改页面时也不会影响程序逻辑。
有关定界符的使用,开发者可以指定任意的格式,也可以不指定定界符,使用Smarty默认的定界符“{”和“}”。
Smarty中最常用的两个方法。
- assign方法
assign方法用于在模板被执行时为模板变量赋值。语法格式如下:
{assign var = " " value = " "}
其中,var是被赋值的变量名,value是赋给变量的值。
2. display方法
display方法用于显示模板,需要指定一个合法的模板资源的类型和路径,还可以通过第二个可选参数指定一个缓存号,相关的信息可以查看缓存。
void display(string template [, string cache_id [, string compile_id]])
其中,template用于指定一个合法的模板资源的类型和路径;cache_id为可选参数,用于指定一个缓存号;compile_id为可选参数,用于指定编译号。编译号可以将一个模板编译成不同版本使用。例如,可针对不同的语言编译模板。编译号的另外一个作用是,如果存在多个$template_dir
模板目录,但只有一个$compile_dir
编译后存档目录,这时可以为每一个$template_dir
模板目录指定一个编译号,以避免相同的模板文件在编译后互相覆盖。除此以外,也可以通过设置$compile_id
属性来一次性设定多个编译号。
Smarty模板设计
Smarty的设计目的是将用户界面设计和开发过程相分离,让美工和程序员各司其职,互不干扰。因此,Smarty类库也自然地被分成两部分来使用,即Smarty模板设计和Smarty程序设计。两部分内容既相互独立,也有一部分重叠。
Smarty模板文件
Smarty模板文件是由一个页面中所有的静态元素,加上一些定界符“{…}”组成的。模板文件统一存放的位置是templates目录。模板中不允许出现PHP代码段。Smarty模板中的所有注释、变量、函数等都要包含在定界符内。
注释
Smarty中的注释和PHP注释类似,都不会显示在源代码中。注释包含在两个星号“*”中间,格式如下:
{* 这是注释 *}
变量
- PHP页面中的变量
PHP页面中的变量,也就是assign方法传过来的变量。使用方法和在PHP中使用基本一致,也需要使用“$”符号,略有不同的是对数组的读取方式。在Smarty中读取数组有两种方法:一种是通过索引获取,和在PHP中相似,可以是一维数组,也可以是多维数组;另一种是通过键值获取数组元素,这种方法的格式和以前接触过的不太一样,其使用符号“.”作为连接符。 - 保留变量
保留变量相当于PHP中的预定义变量。在Smarty模板中使用保留变量时,无须使用assign方法传值,只需直接调用变量名即可。
流程控制
Smarty模板中的流程控制语句包括if条件控制语句和foreach、section循环控制语句。
- if…elseif…else语句
if条件控制语句的使用方法和PHP中的if语句大同小异。需要注意的是,if语句必须以“/if”为结束标志。下面来看if语句的格式。
{if 条件语句1}
语句1
{elseif 条件语句2}
语句2
{else}
语句3
{/if}
在上述条件语句中,除了使用PHP中的<、>、=、!=等常见运算符,还可以使用eq、ne、neq、gt、lt、lte、le、gte、ge、is even、is odd、is not even、is not odd、not、mod、div by、even by、odd by等修饰词修饰。
略