天天看点

php smarty模板原理 示例

<?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');
?>