Smarty模板引擎

Smarty模板引擎特点

1)速度:相对于其他的模板引擎而言,Smarty具有更快的响应速度
2)编译型:当我们第一次访问模板文件时,系统会自动对其进行编译,当第二次访问时,系统首先判断模板是否发生改变,如未改变,则直接调用编译文件。
3)缓存技术:当我们第一次访问模板文件时,如果开启了缓存机制,系统会自动生成缓存文件,当第二次访问时,如果模板文件没有改变且缓存文件没有过期则直接调用缓存文件以
获取更快的响应速度。
编译技术<缓存技术<静态化技术
4)插件技术:方便后期扩展
5)语句自由:if/elseif/else/endif

实时更新的项目和太小项目不适合采用Smarty。

Smarty调用的五步

1)载入Smarty入口文件
2)实例化Smarty对象
3)更改对象的默认属性或行为(更换路径,开启缓存)
4)通过assign方法分配变量到模板文件
5)通过display方法显示输出模板内容

Smarty模板引擎如何监管模板文件

Smarty是通过记录模板文件的最后修改时间来判断模板文件是否发生改变的!普及知识:任何一个文件(电子文档)都有三个时间(创建时间、修改时间、访问时间)

Smarty两个常用方法assign与display

assign方法:分配变量到模板文件
调用该方法主要主要是为Smarty模板文件中的变量赋值,可以传递一对名称/数值对,也可以包含名称/数值对的关联数组。
display方法:显示输出模板内容(替换标记)
基于smarty的脚本必须使用这个方法,而且一个脚本中只能使用一次,因为它负责获取和显示由Smarty引擎引用的模板。

开发常用的几个系统内置变量

在Smarty中,存在一些特殊的内置变量,其允许我们直接在模板文件中,使用{$smarty.数据类型.变量名称}的方式获取某些指定的变量。

$smarty.now:相当于time()函数,获取当前时间的时间戳

$smarty.config:获取配置文件中的变量信息

$smarty.capture:获取capture标签捕获的内容

$smarty.const :获取php中的常量(常用)

smarty.get.page s m a r t y . g e t . p a g e : 相 当 于 _GET[‘page’]

smarty.post.page s m a r t y . p o s t . p a g e : 相 当 于 _POST[‘page’]
smarty.session.id s m a r t y . s e s s i o n . i d : 相 当 于 _SESSION[‘id’](常用)

foreach内建函数

基本语法:

{foreach from=数组 key=键  name=名称 item=内容 } 
    {foreachelse} 
{/foreach}

参数说明:
from:必选项,要遍历的数组元素
item:必选项,每次遍历时,系统会自动将遍历结果放入item指定的变量中
name:foreach循环名称,常用于附加属性的操作
key:数组的键名
foreachelse:当要遍历的数组元素为空时,系统会自动执行foreachelse

capture内建函数

基本语法:
{capture name=‘变量’}
需要捕获的内容
{/capture}
主要功能:捕获一段内容,但本次不输出,如果需要输出,可以使用内置变量:
{$smarty.capture.变量名称} 来获取

Smarty缓存

必须开启缓存开关(默认是关闭的)
可以设置缓存文件的生命周期(非必须),如果不设置,默认为3600秒(1小时)
缓存作用:1可以加快服务器的响应速度;2.减少服务器的压力(I/O开销问题)3减少对数据库的访问

问题:缓存文件是由模板直接生成还是由编译文件直接生成呢?
答:缓存文件是由编译文件直接生成的!

这里又有问题了,如果我改了数据库的某个内容,想更新显示内容,但是缓存又还没到消亡时间,那该肿么办呢?
$smarty->clearCache(“index.tpl”);
上面的clearCache可以解决这个问题,只要更新了数据后,调用clearCache清除一下缓存就可以了。

在实际项目应用中,如果我们采用缓存技术或静态化技术,在后台数据有更新或调整时,一定要重新生成缓存文件或静态文件,谨记!!!

你可能感兴趣的:(PHP)