定义文件:
1. 创建目录文件tpl
2. 创建模版处理文件tpl/Template.php
3. 显示处理页面 tpl/index.php
4. 创建模版文件 tpl/index.html
5. 编译目录文件 tpl/compile
tpl/Template.php源代码
<?php
class Template {
// 模版中的变量
protected $tplVals = array();
// 编译文件路径
protected $compileFile = './compile/';
// 编译文件扩展名
private $compileExtendName = '.php';
// 模版文件扩展名
private $tplExtendName = '.html';
public function __construct(){}
/**
* 替换模版文件中的变量
* @param array $data 模版文件的内容
* @return string $data 替换模版文件的内容
*/
private function replaceTplVar($data){
foreach($this->tplVals as $k=>$v) {
$data = str_replace('{$'.$k.'}', $v, $data);
}
return $data;
}
/**
* 显示模版
* @param unkown $tpl
*/
public function display($tpl) {
// 获取模版内容
$content = file_get_contents($tpl.$this->tplExtendName);
// 替换模版中的变量
$content = $this->replaceTplVar($content);
// 编译后的文件
$compileFile = $this->compileFile.md5($tpl).$this->compileExtendName;
// 给编译后的文件添加内容
file_put_contents($compileFile, $content);
// 引入编译文件
require_once $compileFile;
}
/**
* 模版变量绑定
* @param string $name 模版变量名
* @param string $value 模版变量值
* @return null
*/
public function assign($name, $value) {
$this->tplVals[$name] = $value;
}
}
tpl/index.php源代码
<?php
require_once './template.php';
$tpl = new Template();
$tpl->assign('title','自定义smart有模版引擎');
$tpl->assign('content','这是模本内容');
$tpl->display('index');
tpl/index.html源代码
<!doctype html>
<html>
<head>
<title>欢迎大家来零壹码学习自定义模版引擎</title>
<meta charset="utf-8" />
</head>
<body>
<h1>{$title}</h1>
<p>{$content}</p>
</body>
</html>
执行index.php文件之后结果: