php模板引擎技术简单实现
发布时间:2020-05-23 15:45:09 所属栏目:PHP 来源:互联网
导读:这篇文章主要为大家详细介绍了php模板引擎技术简单实现,感兴趣的小伙伴们可以参考一下
|
用了smarty,tp过后,也想了解了解其模板技术是怎么实现,于是写一个简单的模板类,大致就是读取模板文件->替换模板文件的内容->保存或者静态化 tpl.class.php主要解析 assign 方法实现 0){ foreach ($tpl_var as $k => $v) { $this->tpl_vars[$k] = $v; } }elseif($tpl_var){ $this->tpl_vars[$tpl_var] = $tpl_value; } }fetch 方法实现 //判断编译文件是否需要重新生成(编译文件是否存在或者模板文件修改时间大于编译文件的修改时间)
if(!file_exists($comFile) || filemtime($tplFile) > filemtime($comFile)){
//编译,此处也可以使用ob_start()进行静态化
$content = $this->tplReplace(file_get_contents($tplFile));
file_put_contents($comFile,$content);
}
}
简单编译方法:按照规则进行正则替换 left_delimiter,'/'); $right = preg_quote($this->right_delimiter,'/');
display = fetch+echo template_dir.'/'.$fileName;
include $comFile; 其他属性 //编译文件存放位置
private $compile_dir = 'compiles';
//左定界符
private $left_delimiter = '{';
//右定界符
private $right_delimiter = '}';
//内部临时变量,存储用户赋值
private $tpl_vars = array();
//错误信息
private $errorMessage = '';
/**
* 修改类属性的值
* @param array $configs 需要修改的相关属性及值
* @return bool
*/
public function setConfigs(array $configs){
if(count($configs) > 0){
foreach ($configs as $k => $v) {
if(isset($this->$k))
$this->$k = $v;
}
return true;
}
return false;
}
测试 模板文件 testTpl.html test_tpl_demo {$name}:{$age}:{$message} |
