public function run(&$_data) { $engine = strtolower(C('TMPL_ENGINE_TYPE')); $_content = empty($_data['content']) ? $_data['file'] : $_data['content']; $_data['prefix'] = !empty($_data['prefix']) ? $_data['prefix'] : C('TMPL_CACHE_PREFIX'); if ('think' == $engine) { // 采用Think模板引擎 if (!empty($_data['content']) && $this->checkContentCache($_data['content'], $_data['prefix']) || $this->checkCache($_data['file'], $_data['prefix'])) { // 缓存有效 //载入模版缓存文件 Storage::load(C('CACHE_PATH') . $_data['prefix'] . md5($_content) . C('TMPL_CACHFILE_SUFFIX'), $_data['var'], 'tpl'); } else { $tpl = Think::instance('Think\\Template'); // 编译并加载模板文件 $tpl->fetch($_content, $_data['var'], $_data['prefix']); } } else { // 调用第三方模板引擎解析和输出 if (strpos($engine, '\\')) { $class = $engine; } else { $class = 'Think\\Template\\Driver\\' . ucwords($engine); } if (class_exists($class)) { $tpl = new $class(); $tpl->fetch($_content, $_data['var']); } else { // 类没有定义 E(L('_NOT_SUPPORT_') . ': ' . $class); } } }
/** * 加载模板 * @access public * @param string $templateFile 模板文件 * @param array $templateVar 模板变量 * @param string $prefix 模板标识前缀 * @return void */ public function fetch($templateFile, $templateVar, $prefix = '') { $this->tVar = $templateVar; $templateCacheFile = $this->loadTemplate($templateFile, $prefix); Storage::load($templateCacheFile, $this->tVar, null, 'tpl'); }