定义文件:
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>