| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <?php
- // +----------------------------------------------------------------------
- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2009 http://thinkphp.cn All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
- // +----------------------------------------------------------------------
- // | Author: liu21st <liu21st@gmail.com>
- // +----------------------------------------------------------------------
- // $Id$
- /**
- +------------------------------------------------------------------------------
- * Think模板引擎解析类
- +------------------------------------------------------------------------------
- * @category Think
- * @package Think
- * @subpackage Util
- * @author liu21st <liu21st@gmail.com>
- * @version $Id$
- +------------------------------------------------------------------------------
- */
- class TemplateThink
- {
- /**
- +----------------------------------------------------------
- * 渲染模板输出
- +----------------------------------------------------------
- * @access public
- +----------------------------------------------------------
- * @param string $templateFile 模板文件名
- * @param array $var 模板变量
- * @param string $charset 模板输出字符集
- * @param string $varPrefix 模板变量前缀
- +----------------------------------------------------------
- * @return void
- +----------------------------------------------------------
- */
- public function fetch($templateFile,$var,$charset) {
- if(!$this->checkCache($templateFile)) {
- // 缓存无效 重新编译
- $tpl = Think::instance('ThinkTemplate');
- // 编译并加载模板文件
- $tpl->load($templateFile,$var,$charset);
- }else{
- // 缓存有效 直接载入模板缓存
- // 模板阵列变量分解成为独立变量
- extract($var, EXTR_OVERWRITE);
- //载入模版缓存文件
- include C('CACHE_PATH').md5($templateFile).C('TMPL_CACHFILE_SUFFIX');
- }
- }
- /**
- +----------------------------------------------------------
- * 检查缓存文件是否有效
- * 如果无效则需要重新编译
- +----------------------------------------------------------
- * @access public
- +----------------------------------------------------------
- * @param string $tmplTemplateFile 模板文件名
- +----------------------------------------------------------
- * @return boolen
- +----------------------------------------------------------
- */
- protected function checkCache($tmplTemplateFile)
- {
- if (!C('TMPL_CACHE_ON')) // 优先对配置设定检测
- return false;
- $tmplCacheFile = C('CACHE_PATH').md5($tmplTemplateFile).C('TMPL_CACHFILE_SUFFIX');
- if(!is_file($tmplCacheFile))
- return false;
- elseif (filemtime($tmplTemplateFile) > filemtime($tmplCacheFile)) {
- // 模板文件如果有更新则缓存需要更新
- return false;
- } elseif (C('TMPL_CACHE_TIME') != -1 && time() > filemtime($tmplCacheFile)+C('TMPL_CACHE_TIME')) {
- // 缓存是否在有效期
- return false;
- }
- //缓存有效
- return true;
- }
- }
- ?>
|