Exemplo n.º 1
0
 /**
  * 载入layout方法
  * @param file 文件名
  * @author Colin <*****@*****.**>
  */
 public function Layout($file)
 {
     list($controller, $method) = URL::getCurrentUrl();
     $tplFile = $file;
     //判断是否写了目录名支持持一级
     $_patten = '/(.*)\\/(.*)/';
     if (preg_match($_patten, $file, $_match)) {
         $tplFile = Config('LAYOUT_DIR') . '/' . $_match[2];
     }
     //设置路径
     $dircname = Config('TPL_C_DIR') . ltrim(APP_NAME, './') . '/' . $controller . '/';
     //判断模板文件是否存在
     if (!file_exists($tplFile)) {
         throw new MyError($tplFile . '视图文件不存在!');
     }
     $name = $this->getTemplateName($file);
     $name = str_replace('/', '_', $name);
     //生成编译文件
     $parFile = $dircname . md5($name) . $name . '.php';
     //判断编译文件是否存在 如果存在那么就直接调用编译文件 如果不存在 那么久重新编译生成
     if (!file_exists($parFile) || filemtime($parFile) < filemtime($tplFile)) {
         //编译文件的修改时间<tpl模板文件的修改时间
         //实例化解析类
         $parser = ObjFactory::CreateTemplatesParse('tpl', $tplFile);
         //调用解析类里面的公共方法
         $parser->comile($parFile);
     }
     //引入编译文件
     include $parFile;
 }