smarty模板引擎的工作原理是什么

介绍

这篇文章给大家介绍smarty模板引擎的工作原理是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

模板引擎是用于把模板文件和数据内容合并在一起的程序,便于网站开发有利于代码分离和维护,了解一个模板最好知道其工作原理,以便于实现一通万通。

模板文件一般是HTML xml js等类型文件,如果不用模板引擎若要把数据显示在网页上,我们需要在php中输出HTML,而使用模板则只要把数据交给模板引擎程序即可,然后告诉它用哪个模板文件,自然就会把数据和页面结合以后返回或输出,模板至少有以下功能1。把数据提供给模板引擎的功能。2。指定模板的功能。3。输出结果的功能。一般来说为了方便程序员们使用模板引擎,开发者都会把它的功能在一定程度上封装起来,封装成一个类,实例化之后得到一个对象,即模板引擎对象,一个对象有其属性和方法,自作聪明的对象的属性和方法在smarty手册上查找,首先说说其方法,分配把数据提交给模板的方法。没有单独的指定模板文件的方法已经合并到输出的方法中,输出的方法有两个显示直接输出,获取返回合并好的HTML代码,对于输出我们主要用到的是分配因为我们显示的数据往往是多样性的,可能是一个量,可能是一个数组量也可能是多维数组,在不同的情况下应该如何正确提交给smarty是一个问题,提交后如何对应显示也是个问题,smarty引擎使用的解释方法是先把HTML文件转化为php文件,然后在赋值各个量,并且执行这个php文件,对应不同的数据格式,它有一套固定的书写方式,需要我们用这种书写方式在模板文件上做对应的标记,smarty默认使用的模板标记符是一对{},比如{$一个}这个标记等效于回声一美元;在php中我们需要有对应的赋值过程,$ smarty→分配(“a",“值“);如果我们有多个量进行赋值,一个个这样写就很麻烦,smarty为我们考虑了这一点,例如我们从数据库里读出一个文章,要显示在页面的内容有标题内容作者时间,数据结构大体是这样的

代码如下:


数组([id]=祝辞1,(& # 39;标题# 39;]=祝辞;“标题“,…),

我们的模板需要有几个对应的标记,例如

代码如下:


& lt; h2> {$ title} & lt;/h2>
& lt; div>{$内容}& lt;/div>

一个个赋值太麻烦,分配方法支持数组直接赋值,$行=从数据库读出的据,

$ smarty→分配(行)美元;smarty就会取数据索引自动一一赋值,但是这个时候为了避免引起变量冲突,我们希望还是直接以数组形式赋值呢,例如

代码如下:


$行=从数据库读出的据,
$ smarty→分配(“rows",行美元);

如果此时我们在模板的标记是{$行}那输出的时候我们只能看到数组正如php里面直接回波数组一样,在php输出具体量是echo $行[& # 39;标题# 39;];smarty规定的符号是一个点的号,{$行。标题},用这种方式类似于

代码如下:


echo $行[& # 39;标题# 39;]

每种模板有其对应的书写规则,接下来如果要显示的是一个文章列表呢,假设mysql给我们返回了10条数据,10条数据都要显示出来,而且他们的索引肯定完全相同,根据编程思路知道结果求过程,假设显示如下

代码如下:


& lt; ul>
& lt; li> 1111 & lt;/li>
& lt; li> 222 & lt;/li>
& lt; li> 333 & lt;/li>
& lt; li> 4444 & lt;/li>
& lt;/ul>

如果这是我们希望输出的样子

首先这是多个量当然用的是数组了,

代码如下:


$=列表数组();
,($行=数据){
列表[]=美元行;
}
$ smarty→分配(“list",列表)美元;

先把数据放到一个数组中再一次性交给smarty,这样一列表来变量里面是一个二维数组,如果是我们得到一个这样的二维数组,要把里面所有值显示出来,最好的方法是循环输出,同样smarty为我们提供了循环用的标记,部分和foreach

部分标记格式

代码如下:


{name=这部分次循环的名字循环=数据量名}

{/节}


{列表循环节名=我=$}
& lt; li>{$列表[我].title} & lt;/li>
{/节}

上面的代码看起来很像的循环,但这里的我不是为循环里面的美元我只是这个循环的名字,美元列表(循环名]这个写法可以每次从数组里得到一个量,正如刚才说的,美元的列表是一个二维数组、列表[我]美元得到的还是数组。

还有一个写法就是foreach其语法如下:

代码如下:


{foreach关键=索引项=值从=赋值变量}

{$关键}:{$ item} & lt; br/祝辞

smarty模板引擎的工作原理是什么