改进模板引擎

This commit is contained in:
thinkphp
2018-04-24 12:18:02 +08:00
parent a76d656110
commit e255100c7f
3 changed files with 16 additions and 30 deletions

View File

@@ -1527,6 +1527,7 @@ class Route
* 解析URL地址为 模块/控制器/操作 * 解析URL地址为 模块/控制器/操作
* @access private * @access private
* @param string $url URL地址 * @param string $url URL地址
* @param bool $convert 是否自动转换URL地址
* @return array * @return array
*/ */
private static function parseModule($url, $convert = false) private static function parseModule($url, $convert = false)

View File

@@ -15,6 +15,8 @@ use think\Exception;
class File class File
{ {
protected $cacheFile;
/** /**
* 写入编译缓存 * 写入编译缓存
* @param string $cacheFile 缓存的文件名 * @param string $cacheFile 缓存的文件名
@@ -42,20 +44,13 @@ class File
*/ */
public function read($cacheFile, $vars = []) public function read($cacheFile, $vars = [])
{ {
$this->cacheFile = $cacheFile;
if (!empty($vars) && is_array($vars)) { if (!empty($vars) && is_array($vars)) {
// 模板阵列变量分解成为独立变量 // 模板阵列变量分解成为独立变量
if (isset($vars['cacheFile'])) { extract($vars, EXTR_OVERWRITE);
$_think_cacheFile = $cacheFile;
$cacheFile = $vars['cacheFile'];
unset($vars['cacheFile'], $vars['_think_cacheFile']);
extract($vars, EXTR_OVERWRITE);
include $_think_cacheFile;
return;
}
extract($vars);
} }
//载入模版缓存文件 //载入模版缓存文件
include $cacheFile; include $this->cacheFile;
} }
/** /**

View File

@@ -32,6 +32,8 @@ class Php
// 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 // 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写
'auto_rule' => 1, 'auto_rule' => 1,
]; ];
protected $template;
protected $content;
public function __construct($config = []) public function __construct($config = [])
{ {
@@ -70,18 +72,12 @@ class Php
if (!is_file($template)) { if (!is_file($template)) {
throw new TemplateNotFoundException('template not exists:' . $template, $template); throw new TemplateNotFoundException('template not exists:' . $template, $template);
} }
$this->template = $template;
// 记录视图信息 // 记录视图信息
App::$debug && Log::record('[ VIEW ] ' . $template . ' [ ' . var_export(array_keys($data), true) . ' ]', 'info'); App::$debug && Log::record('[ VIEW ] ' . $template . ' [ ' . var_export(array_keys($data), true) . ' ]', 'info');
if (isset($data['template'])) {
$__template__ = $template; extract($data, EXTR_OVERWRITE);
$template = $data['template']; include $template;
unset($data['template'], $data['__template__']);
extract($data, EXTR_OVERWRITE);
include $__template__;
} else {
extract($data, EXTR_OVERWRITE);
include $template;
}
} }
/** /**
@@ -93,16 +89,10 @@ class Php
*/ */
public function display($content, $data = []) public function display($content, $data = [])
{ {
if (isset($data['content'])) { $this->content = $content;
$__content__ = $content;
$content = $data['content']; extract($data, EXTR_OVERWRITE);
unset($data['content'], $data['__content__']); eval('?>' . $this->content);
extract($data, EXTR_OVERWRITE);
eval('?>' . $__content__);
} else {
extract($data, EXTR_OVERWRITE);
eval('?>' . $content);
}
} }
/** /**