【CTF部分基础知识二之PHP(二十九)】

Smarty模板技术

Smarty是PHP的一个模板引擎,是众多PHP模板中最优秀、著名的模板之一。

什么是Smarty

Smarty是一个使用PHP编写的PHP模板引擎,它将一个应用程序分成两个部分实现:视图和逻辑控制。简单地讲,就是将UI(用户界面)和PHPcode(PHP代码)分离,这样程序员在修改程序时不会影响页面设计,而美工在重新设计或修改页面时也不会影响程序逻辑。

有关定界符的使用,开发者可以指定任意的格式,也可以不指定定界符,使用Smarty默认的定界符“{”和“}”。

Smarty中最常用的两个方法。

  1. 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注释类似,都不会显示在源代码中。注释包含在两个星号“*”中间,格式如下:

{* 这是注释 *}

变量

  1. PHP页面中的变量
    PHP页面中的变量,也就是assign方法传过来的变量。使用方法和在PHP中使用基本一致,也需要使用“$”符号,略有不同的是对数组的读取方式。在Smarty中读取数组有两种方法:一种是通过索引获取,和在PHP中相似,可以是一维数组,也可以是多维数组;另一种是通过键值获取数组元素,这种方法的格式和以前接触过的不太一样,其使用符号“.”作为连接符。
  2. 保留变量
    保留变量相当于PHP中的预定义变量。在Smarty模板中使用保留变量时,无须使用assign方法传值,只需直接调用变量名即可。

流程控制
Smarty模板中的流程控制语句包括if条件控制语句和foreach、section循环控制语句。

  1. 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等修饰词修饰。

  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liana-Fany

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值