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);    # 清除所有超过一小时期限的文件

 

posted @ 2018-09-25 21:21  孤无涯  阅读(417)  评论(0编辑  收藏  举报