/** * 载入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; }