| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | 
							- <?php
 
- // +----------------------------------------------------------------------
 
- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
 
- // +----------------------------------------------------------------------
 
- // | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
 
- // +----------------------------------------------------------------------
 
- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
 
- // +----------------------------------------------------------------------
 
- // | Author: liu21st <liu21st@gmail.com>
 
- // +----------------------------------------------------------------------
 
- namespace Behavior;
 
- use Think\Storage;
 
- use Think\Think;
 
- /**
 
-  * 系统行为扩展:模板解析
 
-  */
 
- class ParseTemplateBehavior {
 
-     // 行为扩展的执行入口必须是run
 
-     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']);
 
-             }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 $tmplTemplateFile  模板文件名
 
-      * @return boolean
 
-      */
 
-     protected function checkCache($tmplTemplateFile,$prefix='') {
 
-         if (!C('TMPL_CACHE_ON')) // 优先对配置设定检测
 
-             return false;
 
-         $tmplCacheFile = C('CACHE_PATH').$prefix.md5($tmplTemplateFile).C('TMPL_CACHFILE_SUFFIX');
 
-         if(!Storage::has($tmplCacheFile)){
 
-             return false;
 
-         }elseif (filemtime($tmplTemplateFile) > Storage::get($tmplCacheFile,'mtime')) {
 
-             // 模板文件如果有更新则缓存需要更新
 
-             return false;
 
-         }elseif (C('TMPL_CACHE_TIME') != 0 && time() > Storage::get($tmplCacheFile,'mtime')+C('TMPL_CACHE_TIME')) {
 
-             // 缓存是否在有效期
 
-             return false;
 
-         }
 
-         // 开启布局模板
 
-         if(C('LAYOUT_ON')) {
 
-             $layoutFile  =  THEME_PATH.C('LAYOUT_NAME').C('TMPL_TEMPLATE_SUFFIX');
 
-             if(filemtime($layoutFile) > Storage::get($tmplCacheFile,'mtime')) {
 
-                 return false;
 
-             }
 
-         }
 
-         // 缓存有效
 
-         return true;
 
-     }
 
-     /**
 
-      * 检查缓存内容是否有效
 
-      * 如果无效则需要重新编译
 
-      * @access public
 
-      * @param string $tmplContent  模板内容
 
-      * @return boolean
 
-      */
 
-     protected function checkContentCache($tmplContent,$prefix='') {
 
-         if(Storage::has(C('CACHE_PATH').$prefix.md5($tmplContent).C('TMPL_CACHFILE_SUFFIX'))){
 
-             return true;
 
-         }else{
 
-             return false;
 
-         }
 
-     }    
 
- }
 
 
  |