您的位置:首页 > 其它

关于模板的原理和解析

2015-10-06 02:49 429 查看
将PHP代码和静态HTML代码进行分离,使代码的可读性和维护性得到显著提高。

使用模板引擎:

    我们所说的模板是Web模板,是主要由HTML标记组成的语言来编写的页面,但也有如何表示包含动态生成内容的方式(解析标签)。模板引擎是一种软件库,允许我们从模板生成HTML代码,并指定要包含的动态内容。

  模板引擎的特点:

  1.鼓励分离:让更个系统的可读性和维护性得到提高。

  2.促进分工:使得程序员和美工去专心处理自己的设计。

  3.比PHP更容易解析:编译文件和缓存文件加载更快、占资源更少。

  4.增加安全性:可限制模板设计师进行不安全的操作的能力避免误删误访问等。

模板处理的流程图

  


 

创建模板:

  1、创建初始模板所需要的文件夹和文件。

  a) index.php主文件,用于编写业务逻辑。

  b) template.inc.php模板初始化文件,用于初始模版信息。

  c) templates目录存放所有的模板文件。

  d) templates_c目录存放所有编译文件。

  e) cache目录存放所有缓存文件。

  f) includes目录存放所有的类文件。

  g) config目录存放模板系统变量配置文件。

  


  以下是源码:

主文件 index.php  

<?php
   //index.php

  //设置编码为UTF-8

  header('Content-Type:text/html;Charset=utf-8');

  //网站根目录

  define('ROOT_PATH', dirname(__FILE__));

  //存放模板文件夹

  define('TPL_DIR', ROOT_PATH.'/templates/');

  //编译文件夹

  define('TPL_C_DIR', ROOT_PATH.'/templates_c/');

  //缓存文件夹

  define('CACHE_DIR', ROOT_PATH.'/cache/');

  //定义缓存状态

  define('IS_CACHE',true);

  //设置缓存状态开关

  IS_CACHE ? ob_start() : null;

  include ROOT_PATH.'/includes/Templates.class.php';

  $_name = '方块李';

$array = array(1,2,3,4,5,6);
$_tpl = new Templates();
$_tpl->assign('name', $_name);
$_tpl->assign('a', 5>4);
$_tpl->assign('array', $array);
//显示
$_tpl->display('index.tpl');
?>


模板文件 HTML

  

模板类:

+ View Code

解析类:

  

总结:模板引擎的整个过程:

  1、当浏览器请求index.php文件时,实例化模板类对像 $_tpl = new Templates();

  2、当Templates实例化的时候,生成两个数组,一个用来存放模板变量,另一个存放系统变量,通过构造方法,判断文件夹是否存在,同时通过XML文件将系统变量数组初始化

  3、通过模板类Templates的注入方法,assign(),将对应模板index.tpl中变量的index.php的内容注入到模板类的私有变量,完成初始化

  4、模板类Templates类显示方法display() 通过实例化解析类Parser,将取到的注入变量通过解析类进行解析(即替换)

  5、解析(替换)后,将文件写入PHP、HTML混全文件

  6、通过Templates类的显示方法将文件输出:

     1、第一次执行显示方法时,将会把PHP、HTML混合文件,生成纯静态的缓存文件

     2、调用缓存文件,显示页面

     3、当浏览器再次调用显示方法时,首先根据各文件的最后修改时间,判断是否重新生成缓存文件或直接调用已存在的缓存文件

重点:

  1、通过正则表达式进行字符串的替换

  2、熟悉OOP
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: