/** * 从模板引擎处获得内容 */ public function fetch($templateFile = '', $content = '', $prefix = '') { if (empty($content)) { // 模板文件解析标签 Tag::listen('view_template', $templateFile); // 模板文件不存在直接返回 if (!is_file($templateFile)) { return null; } } // 页面缓存 ob_start(); ob_implicit_flush(0); // 使用PHP原生模板 if ('php' == strtolower(Config::get('TMPL_ENGINE_TYPE'))) { // 模板阵列变量分解成为独立变量 extract($this->tVar, EXTR_OVERWRITE); // 直接载入PHP模板 empty($content) ? include $templateFile : eval('?>' . $content); } else { // 视图解析标签 $params = array('var' => $this->tVar, 'file' => $templateFile, 'content' => $content, 'prefix' => $prefix); // 解析模板 Tag::listen('view_parse', $params); } // 获取并清空缓存 $content = ob_get_clean(); // 内容过滤标签 Tag::listen('view_filter', $content); // 返回内容 return $content; }
/** * 应用程序初始化 * @access public * @return void */ public static function init() { // 设置系统时区 date_default_timezone_set(Config::get('DEFAULT_TIMEZONE')); // 定义当前请求的系统常量 define('NOW_TIME', $_SERVER['REQUEST_TIME']); define('REQUEST_METHOD', $_SERVER['REQUEST_METHOD']); define('IS_GET', REQUEST_METHOD == 'GET' ? true : false); define('IS_POST', REQUEST_METHOD == 'POST' ? true : false); define('IS_PUT', REQUEST_METHOD == 'PUT' ? true : false); define('IS_DELETE', REQUEST_METHOD == 'DELETE' ? true : false); define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' || !empty($_POST[Config::get('VAR_AJAX_SUBMIT')]) || !empty($_GET[Config::get('VAR_AJAX_SUBMIT')]) ? true : false); // URL调度结束标签 Tag::listen('url_dispatch'); // TODO: 删除页面压缩功能,改为使用Smarty进行页面压缩管理 // 页面压缩输出支持 // if(Config::get('OUTPUT_ENCODE')) { // $zlib = ini_get('zlib.output_compression'); // if(empty($zlib)) { // ob_start('ob_gzhandler'); // } // } // 系统变量安全过滤 if (Config::get('VAR_FILTERS')) { $filters = explode(',', Config::get('VAR_FILTERS')); foreach ($filters as $filter) { // 全局参数过滤 array_walk_recursive($_POST, $filter); array_walk_recursive($_GET, $filter); } } // 配置主题目录 define('THEME_PATH', GROUP_PATH . 'Tpl/'); // 缓存路径 Config::set('CACHE_PATH', CACHE_PATH . GROUP_NAME . '/'); // 动态配置 TMPL_EXCEPTION_FILE,改为绝对地址 Config::set('TMPL_EXCEPTION_FILE', realpath(Config::get('TMPL_EXCEPTION_FILE'))); }