/** * 应用程序初始化 * @access public * @return void */ static public function start() { // 注册AUTOLOAD方法 spl_autoload_register('Think\Think::autoload'); // 设定错误和异常处理 register_shutdown_function('Think\Think::fatalError'); set_error_handler('Think\Think::appError'); set_exception_handler('Think\Think::appException'); // 初始化文件存储方式 Storage::connect(STORAGE_TYPE); $runtimefile = RUNTIME_PATH.APP_MODE.'~runtime.php'; if(!APP_DEBUG && Storage::has($runtimefile)){ Storage::load($runtimefile); }else{ if(Storage::has($runtimefile)) Storage::unlink($runtimefile); $content = ''; // 读取应用模式 $mode = include is_file(CONF_PATH.'core.php')?CONF_PATH.'core.php':MODE_PATH.APP_MODE.'.php'; // 加载核心文件 foreach ($mode['core'] as $file){ if(is_file($file)) { include $file; if(!APP_DEBUG) $content .= compile($file); } } // 加载应用模式配置文件 foreach ($mode['config'] as $key=>$file){ is_numeric($key)?C(load_config($file)):C($key,load_config($file)); } // 读取当前应用模式对应的配置文件 if('common' != APP_MODE && is_file(CONF_PATH.'config_'.APP_MODE.CONF_EXT)) C(load_config(CONF_PATH.'config_'.APP_MODE.CONF_EXT)); // 加载模式别名定义 if(isset($mode['alias'])){ self::addMap(is_array($mode['alias'])?$mode['alias']:include $mode['alias']); } // 加载应用别名定义文件 if(is_file(CONF_PATH.'alias.php')) self::addMap(include CONF_PATH.'alias.php'); // 加载模式行为定义 if(isset($mode['tags'])) { Hook::import(is_array($mode['tags'])?$mode['tags']:include $mode['tags']); } // 加载应用行为定义 if(is_file(CONF_PATH.'tags.php')) // 允许应用增加开发模式配置定义 Hook::import(include CONF_PATH.'tags.php'); // 加载框架底层语言包 L(include THINK_PATH.'Lang/'.strtolower(C('DEFAULT_LANG')).'.php'); if(!APP_DEBUG){ $content .= "\nnamespace { Think\\Think::addMap(".var_export(self::$_map,true).");"; $content .= "\nL(".var_export(L(),true).");\nC(".var_export(C(),true).');Think\Hook::import('.var_export(Hook::get(),true).');}'; Storage::put($runtimefile,strip_whitespace('
- 注册autoload方法
- 设定错误和异常处理
- 初始化文件存储方式
- 初始化缓存文件。如果不是调试模式,且缓存文件存在的话,就加载缓存
- 否则,有缓存的话,就删除缓存文件。
- 引入Mode/common.php 里面的core,如果对应的文件存在的话,就引入文件。如果不是调试模式的话,content就等于编译文件。
// 函数和类文件 'core' => array( THINK_PATH.'Common/functions.php', COMMON_PATH.'Common/function.php', CORE_PATH . 'Hook'.EXT, CORE_PATH . 'App'.EXT, CORE_PATH . 'Dispatcher'.EXT, //CORE_PATH . 'Log'.EXT, CORE_PATH . 'Route'.EXT, CORE_PATH . 'Controller'.EXT, CORE_PATH . 'View'.EXT, BEHAVIOR_PATH . 'BuildLiteBehavior'.EXT, BEHAVIOR_PATH . 'ParseTemplateBehavior'.EXT, BEHAVIOR_PATH . 'ContentReplaceBehavior'.EXT, ),复制代码
- 加载配置文件
'config' => array( THINK_PATH.'Conf/convention.php', // 系统惯例配置 CONF_PATH.'config'.CONF_EXT, // 应用公共配置 ),复制代码
- 如果APP_MODE不等于common的话,读取当前应用模式对应的配置文件
- 加载模式行为定义
- 加载应用行为定义
- 加载框架底层语言包
- 读取当前应用状态对应的配置文件
- 设置系统时区
- 检查应用目录结构,如果不存在则自动创建
- 记录加载文件时间
- APP:run()