PHPcms模板编译过程

来源:互联网 发布:mac上的绘画软件 编辑:程序博客网 时间:2024/06/01 18:33

后台模板编译:

后台模板的渲染代码如下:

$this->admin_tpl('admin_list');

其实现方法如下:

/** * 加载后台模板 * @param string $file 文件名 * @param string $m 模型名 */final public static function admin_tpl($file, $m = '') {   $m = empty($m) ? ROUTE_M : $m;   if(empty($m)) return false;   return PC_PATH.'modules'.DIRECTORY_SEPARATOR.$m.DIRECTORY_SEPARATOR.'templates'.DIRECTORY_SEPARATOR.$file.'.tpl.php';}

渲染的基本过程为:

首先, admin_tpl根据传入的参数来判断加载哪个模块,如果有传入m的值,则直接调用该模块,否则使用ROUT_M模块,该模块在创建应用时已经被定义:
这里写图片描述

即默认的content模块。然后包含文件模块中对应的文件。

前台模板的编译:

前台模板的渲染代码如下:

include template('content',$template);

前台模板的渲染过程为:

  1. 判断确定样式下指定模块下的要编译的.html结尾的文件是否存在,如果不存在则去编译默认(default)样式下的模块的.html结尾的文件。
  2. 判断模板缓存文件(caches/caches_template/样式/模块/模板名称.php)是否存在,
    如果不存在,则直接去重新编译模板。如果存在则去判断模板文件和编译文件最近修改的时间, 如果模板文件的修改时间大于编译文件的时间说明,模板在编译后还进行了修修改, 则重新编译模板文件。
    判断代码如下:
    这里写图片描述

  3. 模板编译的过程如下:即template_complie()方法的执行过程。
    首先根据传入的参数进行目录的匹配,查找要进行编译的.html文件,读取文件内容,定义模板缓存文件的存储目录及模板缓存文件路径,并开启所有读写权限。然后对读取的模板内容进行字符替换,也即进行模板解析。然后将解析的内容重新写入模板缓存文件中。同时开启读写权限。
    编译模板的代码如下:
    这里写图片描述