许可数据和显示模板
1、许可数据:assign()方法
//定义一个变量保存许可内容数据
public $value=array();
/**
* 向模板许可内容
* 可以输入两个值:$tpl->assign("test","this is a test");
* 或者一个值一个数组:$tpl->assign('userInfo',array('username'=>'king','email'=>'353748018@q.com'));
* 或者一个数组
* @param unknown $key
* @param string $value
*/
public function assign($key,$value=NULL){
if(is_array($key)){
$this->value=$this->value+$key;
}else{
$this->value[$key]=$value;
}
}
2、显示模板
public $file;//模板文件,不带路径和后缀名
private $compileTool;//保存编译器类实例
/**
* 得到模板文件路径,包含文件名+后缀
* @return string
*/
public function getPath(){
return $this->arrayConfig['tamplateDir'].'/'.$this->file.$this->arrayConfig['suffix'];
}
/**
* 显示模板内容
* @param unknown $file
*/
public function display($file){
$this->file=$file;
//检测模板文件是否存在
if(!(file_exists($this->getPath())&&is_file($this->getPath()))){
exit('模板文件不存在');
}
//得到编译后文件路径
$compileFile=$this->arrayConfig['compileDir'].'/'.md5($file).'.php';
if(!(file_exists($compileFile)&&is_file($compileFile))){
//文件不存在
//检测目录是否存在
if(!file_exists($this->arrayConfig['compileDir'])){
//目录不存在,创建之
//0777最大访问权限,true允许创建多级目录
mkdir($this->arrayConfig['compileDir'],0777,true);
}else{
//定义一个编译器类Compile.class.php
//调用编译方法compile()
$this->compileTool->compile($this->getPath(), $compileFile);
}
require_once $compileFile;
}else{
//文件已存在,直接读取
require_once $compileFile;
}
}
显示模板函数display()中调用了一个单独的编译器类Compile.class.php
//在构造函数里面包含Compile.class.php可以重复使用
require_once "libs/Compile.class.php";
//创建编译器类实例
$this->compileTool=new CompileClass();
然后在display()中调用编译器类的方法compile()
从数组中将变量导入到当前的符号表
extract($this->value,EXTR_OVERWRITE);