PHP实现简单的模板引擎功能示例

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP实现简单的模板引擎功能示例脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例讲述了PHP实现简单的模板引擎功能分享给大家供大家参考,具体如下:

PHP web开发中广泛采取mvc的设计模式,controller传递给view层的数据,必须通过模板引擎才能解析出来。实现一个简单的仅仅包含if,foreach标签,解析$foo变量的模板引擎。

编写template模板类和compiler编译类。代码如下:

<PRe class="brush:PHp;"> '.PHP',//文件后缀名 'templateDir' => '../views/',//模板所在文件夹 'compileDir' => '../runtime/cache/views/',//编译后存放的目录 'suffixCompile' => '.PHP',//编译后文件后缀 'isReCacheHtML' => false,//是否需要重新编译成静态HTML文件 'isSupportPHP' => true,//是否支持PHP的语法 'cacheTime' => 0,//缓存时间,单位秒 ]; private $_file;//带编译模板文件 private $_valueMap = [];//键值对 private $_compiler;//编译器 public function __construct($compiler,$config = []) { $this->_compiler = $compiler; $this->_config = array_merge($this->_config,$config); } /** * [assign 存储控制器分配的键值] * @param [tyPE] $values [键值对集合] * @return [type] [description] */ public function assign($values) { if (is_array($values)) { $this->_valueMap = $values; } else { throw new \Exception('控制器分配给视图的值必须为数组!'); } return $this; } /** * [show 展现视图] * @param [type] $file [带编译缓存的文件] * @return [type] [description] */ public function show($file) { $this->_file = $file; if (!is_file($this->path())) { throw new \Exception('模板文件'. $file . '不存在!'); } $compileFile = $this->_config['compileDir'] . md5($file) . $this->_config['suffixCompile']; $cacheFile = $this->_config['compileDir'] . md5($file) . '.html'; //编译后文件不存在或者缓存时间已到期,重新编译,重新生成html静态缓存 if (!is_file($compileFile) || $this->isRecompile($compileFile)) { $this->_compiler->compile($this->path(),$compileFile,$this->_valueMap); $this->_config['isReCacheHtml'] = true; if ($this->isSupportPHP()) { extract($this->_valueMap,EXTR_OVERWRITE);//从数组中将变量导入到当前的符号表 } } if ($this->isReCachehtml()) { ob_start(); ob_clean(); include($compileFile); file_put_contents($cacheFile,ob_get_contents()); ob_end_flush(); } else { reaDFile($cacheFile); } } /** * [isRecompile 根据缓存时间判断是否需要重新编译] * @param [type] $compileFile [编译后的文件] * @return boolean [description] */ private function isRecompile($compileFile) { return time() - filemtime($compileFile) > $this->_config['cacheTime']; } /** * [isReCacheHtml 是否需要重新缓存静态HTML文件] * @return boolean [description] */ private function isReCacheHtml() { return $this->_config['isReCacheHtml']; } /** * [isSupportPHP 是否支持PHP语法] * @return boolean [description] */ private function isSupportPHP() { return $this->_config['isSupportPHP']; } /** * [path 获得模板文件路径] * @return [type] [description] */ private function path() { return $this->_config['templateDir'] . $this->_file . $this->_config['suffix']; } }

脚本宝典总结

以上是脚本宝典为你收集整理的PHP实现简单的模板引擎功能示例全部内容,希望文章能够帮你解决PHP实现简单的模板引擎功能示例所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。