Smarty 简单使用
Smarty是一个PHP的模板引擎,提供让程序逻辑与页面显示(HTML/CSS)代码分离的功能。 也就是PHP代码是程序逻辑,与页面显示分开。
本质:庞大的正则表达式替换库
只要能把php和html分开的技术,都可以称之为模板技术。
MVC和模板技术的区别:
MVC:它是针对整个项目而言的。
模板技术:仅针对视图层而言的。
smarty特点
速度:使用smarty可以获得最大速度的提高(相对于其它模板引擎技术)。
编译型:在下一次访问模板时直接访问编译文件,而不再进行模板重新编译。
缓存技术:可以将用户最终看到的HTML文件缓存成一个静态的HTML页。
插件技术:smarty可以自定义插件。插件实际就是一些自定义的函数。
强大的表现逻辑:模板中可以使用if/elseif/else/endif、foreach等。
知识点:
(1).if、elseif、
每个{if} 都必须有一个配对的 {/if}
所有在php中使用的条件表达式和函数都可以在{if} 内使用
在smarty模板标签中,可以进行数学运算的
(2).foreach
处理数组的情况最多,一维数组、二维数组、多维数组。
foreach是使用做多的。
{foreach $arrayvar as $itemvar}
{foreach $arrayvar as $keyvar=>$itemvar}
注:{foreach}还有一些属性
@index , 当前数组索引,从0开始计算
@iteration,当前循环的次数,从1开始计算
@first,首次循环时,该值为true
@last,循环到最后一次时,该值为true
@total,总的循环次数,可在foreach内部使用,也可以在循环完成之后使用
@show,在foreach循环执行完之后,检测循环是否显示数据的判断
(3)缓存
a.引入配置以及生成缓存
require PATH.'smarty'.DS.'libs'.DS.'Smarty.class.php';
$this->smarty = new Smarty();
// 模板目录,存放模板,HTML文件
$this->smarty->template_dir = PATH.'smarty'.DS.'templates';
// 编译目录,保存编译后的混编语言的地方
$this->smarty->compile_dir = PATH.'smarty'.DS.'templates_c';
$this->smarty->config_dir = PATH.'smarty'.DS.'configs';
$this->smarty->cache_dir = PATH.'smarty'.DS.'cache';
$this->smarty->caching = true;
$this->smarty->cache_lifetime = 3600;
$this->smarty->debugging = true;
// 赋值以及缓存
if(!$this->smarty->iscached(CUR_VIEW_PATH,$goodsId)){
$this->smarty->assign('name','seven',true);
}
// 需要将每个商品详情页单独的生成一个缓存文件,这个就是单模板多缓存
$this->smarty->display(CUR_VIEW_PATH,$goodsId);
b 局部不缓存
标签的缓存控制,标签中使用 nocache 属性,适用于单个标签
变量的缓存控制,分配变量时设置第三个参数为 true,适用于单个变量 $this->assign(‘data’,’data’,’true’)
模板区域缓存控制,模板页面中使用{nocache} {/nocache},适用于一块
c 删除缓存
clearCache:删除指定模板的缓存:
$this->smarty-> clearCache ('index.tpl');
$this->smarty-> clearCache('index.tpl',$goodsId); #某件商品商品详情页
clearAllCache:删除所有的缓存
$this->smarty->clearAllCache(); # 清除所有缓存
$this->smarty->clearAllCache(3600); # 清除所有超过一小时期限的文件