<?php
class mini
{
protected $templates_dir = ''; //模板路径
protected $compile_dir = ''; //编译存放目录
protected $temp_var_arr = array();//外部变量分配到此数组
public function __construct($templates_dir,$compile_dir) //初始化路径
{
$this->templates_dir=$templates_dir;
$this->compile_dir=$compile_dir;
}
public function assign($key,$value)//将外部变量分配到temp_var_arr数组
{
$this->temp_var_arr[$key]=$value;
}
public function display($fileName)//显示编译后的文件
{
$compile_name = $this->compile($fileName);//调用编译函数
include($compile_name);//包含编译后的文件,因为是在函数里面所以外部变量无法访问,只有用 assign 函数分配
}
protected function compile($fileName)
{
$source = file_get_contents($this->templates_dir.'/'.$fileName);
$arr= array();
$source = str_replace('{$', '<?php echo $this->temp_var_arr[\'', $source);
$source = str_replace('}', '\'];?> ', $source);
$compile_name = $this->compile_dir.'/'.str_replace('temp', 'cmp', $fileName);
file_put_contents($compile_name, $source);
return $compile_name;
}
}
?>
<?php
//使用简单的模板示例
require './mini.class.php';
$mini = new mini('./templates','./compile');
$mini ->assign('content','大家好');
$mini -> display('./01temp.html');
?>