PHP模板引擎就是一个PHP类库,使用它可以使PHP代码和HTML代码进行分离,使代码的可读性和维护性得到显著提高。而且这样做的好处是,让美工专心设计HTML前台页面,程序员专心去写PHP业务逻辑。因此,模化引擎很适合公司的Web开发团队使用,使每个人都能发挥其特长。
目前,可以在PHP中应用的并且比较成熟的模板引擎有很多,例如Smarty、TinyButStrong、Template Lite、XTemplate等几十种。使用这些通过PHP编写的模板引擎,可以让你的代码脉络更加清晰,结构更加合理化。也可以让网站的维护和更新变得更容易,创造一个更加良好的开发环境,让开发和设计工作更容易结合在一起。
废话就说到这里,下面教大家如何写这个模板引擎。
首先看一下整个文件夹的目录结构:

tpl文件:模板文件根目录
cache:缓存文件夹
config:系统配置文件夹
includes:引擎核心类库文件夹
templates:模板文件夹
templates_c:编译文件夹
index.php:测试文件
template.inc.php:初始化配置文件
index.php测试文件:
<?php
require 'template.inc.php';//载入初始化配置文件
$tpl=new Templates();//实例化模板类
$tpl->assign('content','打造自己的PHP模板引擎!');//分配变量
$tpl->assign('bool',true);
$tpl->assign('colors',array('red','green','blue'));
$tpl->display('index.tpl');//显示模板文件
?>
template.inc.php初始化配置文件
<?php
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',false);//是否开启缓存
//自动载入类的方法
function __autoload($className){
require_once ROOT_PATH.'/includes/'.$className.'.class.php';
}
?>
接下来就是模板引擎核心类文件:
Templates.class.php模板类文件
<?php
//模板类
class Templates {
private $_vars=array();//存放模板引擎注入的普通变量
private $_configs=array();//载入的系统变量
private $tpl_file;//模板文件路径
private $parse_file;//编译文件路径
private $cache_file;//缓存文件路径
//模板构造方法,主要完成相关目录是否存在的检测,以及将系统变量的值读入到$_configs变量中
public function __construct(){
$this->is_dir_exists();
$this->getConfig();
}
//display()方法:完成与编译,缓存相关的一些功能
public function display($file){
$this->tpl_file=TPL_DIR.$file;//设置模板文件路径
if(!file_exists($this->tpl_file)){
exit($file.'模板文件不存在!');
}
$this->parse_file=TPL_C_DIR.md5($file).'.'.$file.'.php';//设置编译文件路径
include ROOT_PATH.'/includes/Parse.class.php';//载入模板解析类
$parse=new Parse($this->tpl_file);//初始化模板解析类
$parse->compile($this->parse_file,$this->tpl_file);//解析静态模板文件,生成编译文件
//判断是否需要重新生成缓存文件
$this->cache();
}
//assign()方法:接收从index.php文件分配过来的变量的值,将它们保存在$_vars变量中












