欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
  模板引擎的特点:
 
  1.鼓励分离:让更个系统的可读性和维护性得到提高。
 
  2.促进分工:使得程序员和美工去专心处理自己的设计。
 
  3.比PHP更容易解析:编译文件和缓存文件加载更快、占资源更少。
 
  4.增加安全性:可限制模板设计师进行不安全的操作的能力避免误删误访问等
 
  一个PHP对应一个模板文件,经过调用模板类并且经过模板解析类之后,生成编译过后的php编译文件,为了加快访问速度,并且生成纯静态的HTML文件,作为缓存文件。
 
  简易目录:
 
  1.cache文件夹存放静态HTML文件,加快访问速度
 
  2.config文件夹存放系统变量的XML文件
 
  3.includes 存放模板解析类库
 
  -------------Parser.class.php 模板文件解析类  用于解析tpl文件,将其解析成php文件
 
  ------------Templates.class.php    模板类      负责提供给index.php调用传递数据和调用模板文件
 
  4.templates文件夹     存放tpl文件
 
  5.Templates文件夹 存放解析过后的tpl文件,为PHP文件
 
  6.Index.php 调用入口文件
 
  7.template.inc.php     初始化模板文件
 
  8.Test.php 测试文件类
 
  一、定义初始化变量
 
  template.inc.php
 
  二。入口文件index.php
 
  三、Templates.class.php
 
  当实例化Template对象的时候,会先判断各个目录是否存在
 
  当index.php调用$_tpl->assign()方法的时候,调用Template对象中的assign方法,在Template中有一个私有属性$_var为数组类,用于存放assign中的参数
 
  如果变量不存在,或者变量为空的话,提示设置模板变量,否则,以变量名为数组索引,变量值为相对索引的值,存放入$_var私有变量中。
 
  如果出现相同变量名就会出现因为索引相同,出现覆盖的情况。
 
  这个时候掉用assign()方法,assign()方法改写为
 
  在网页端打开访问
 
  当调用Template类中display()方法的时候,传递进来一个模板文件名称
 
  $_tpl->display(‘index.tpl’);
 
  1.接收到tpl模板名称,定位到该模板文件路径,并且检测模板文件是否存在。
 
  2.并且同时声明两个变量用于存放模板编译文件路径和纯静态HTML缓存文件路径
 
  3.模板文件和编译文件和静态文件规则是这样:
 
  如果编译文件和缓存文件都不存在,直接载入编译文件,并且生成静态缓存文件
 
  当编译文件不存在或者模板文件被修改的时候,重新生成编译文件,并且生成静态缓存文件
 
  当第二次访问相同页面,并且编译文件和缓存文件同时存在,并且缓存文件的修改时间大于编译文件的时候,直接访问静态缓存文件
 
  知识点:file_put_contents() 函数把一个字符串写入文件中。
 
  缓存机制:推荐)
 
  filemtime() 函数返回文件内容上次的修改时间。
 
  fileatime() 函数返回指定文件的上次访问时间。
 
  当第一次或者模板文件发生改变的时候,重新解析模板文件,并且将其解析
 
  1.引入模板解析类,并且实例化模板解析类,再将模板文件传入给模板解析类作为初始化参数,构造函数获取到模板文件类型,赋值给模板解析类的私有属性$_tpl
 
  2.当在Template中调用Parser模板解析类中的compile()方法的时候,将编译文件名传递进去。
 
  3.将模板文件放入编译文件之前,先解析tpl中的所有模板标签
 
  已解析if语句为例:
 
  流程是先查找模板中是否存在{if $X}形式的模板标签,如果存在就查找{/if}
 
  如果{/if}存在的情况在区分是否有else,然后通过字符串替换,将其变成PHP形式的输出
 
  知识点:
 
  preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 。
 
  int preg_match( string pattern, string subject [, array matches ] )
 
  pattern
 
  正则表达式
 
  subject
 
  需要匹配检索的对象
 
  matches
 
  可选,存储匹配结果的数组, $matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h61534.shtml