• smarty模板


      smarty模板引擎。基于MVC开发,实现m、v的分离。

      一个libs的smarty库。创建模板和编译后的文件夹。

      assign、display、templates、templates_c等名词的意思。

      引入smarty核心类文件。这个类作用实际就是把一些模板文件的标签翻译成php代码。然后交给web服务器。

      分配assign,实则是向$smarty对象的一个数组属性里塞值。

      翻译的过程,display()这个函数,利用了正则去解析模板标签,转化成了php代码。

      补充一个正则替换的例子。

      

    <?php
    
    $str = "123abc888dd001cc";// 把三个数字的前边和后边加上==
    
    echo preg_replace('/(d{3})/', '==${1}==', $str);

      如果templates_c内部存在了这个对应模板的编译文件,并且生成时间小于模板的修改时间,那么每次访问只需要访问这个编译后的文件。

      new Smarty后,可以更改smarty属性,比如view中解析模板的左分隔符、右分隔符,是否启用缓存、缓存目录、模板目录、编译文件的目录等等都可以动态修改。

      view模板里读取配置:<{config_load file="文件位置"}>     取key值:<{#key#}>   

      view里读取全局变量:<{$smarty.get.queryString}>、<{$smarty.post.some}>、<{$smarty.server.SERVER_NAME}>、session等

      smarty的一些常用的内建函数:比如上边的config_load就属于内建函数。

      foreach、foreachelse、insert、include、include_php、section、

      比如<{foreach from=$arr item=val key=k }>XXXX<{/foreach}>    这些标签都可以自定义的,利用的仍然是php代码。

      自定义标签函数,注册使用:register_funtion($tag_name, $function_name);或者register_block();

      view使用标签<{tag_name 各种属性啥的,就是function_name里的传入参数 }>

      smarty缓存:设置缓存目录;开启缓存;缓存时间长度;

      为什么说有了翻译后的目录文件了(templates_c),还需要缓存呢?实际上翻译文件只是判断了模板文件是否更改,而重新生成。这意味着控制器里的东西,比如分配变量的不同,即使读编译文件也是会跟着不同,编译文件实际也是个php脚本文件。php解释器仍然要去执行。

      这个原因,那么缓存就需要完全静态化。

  • 相关阅读:
    ASP.NET MVC 以Stream 下载文件
    ITextSharp 初次接触
    Easyui中tree组件实现搜索定位功能及展开节点定位
    lodop 打印控件的使用
    XML IList<T> TO DataSet TO DataTable 相互转换
    JSONToObejct 问题 part 1
    可以动态添加图片的轮播插件
    防止机器注册
    sqlServer 取每组的前几条数据
    log4net 动态设定日志文件名
  • 原文地址:https://www.cnblogs.com/firstForEver/p/5229401.html
Copyright © 2020-2023  润新知