首页 > 代码库 > thinkphp 3.2.3 - App.class.php 解析
thinkphp 3.2.3 - App.class.php 解析
class App { public static function init() { load_ext_file(COMMON_PATH); // { // /home/www/www.domain.com/myapp/Common/Common/<LOAD_EXT_FILE,field1>.php // /home/www/www.domain.com/myapp/Common/Conf/<LOAD_EXT_CONFIG,config1>.php // } // URL调度 Dispatcher::dispatch(); // { // //... // // 匹配出模块 // //... // // 加载模块配置文件 /home/www/www.domain.com/myapp/Module1/Conf/config.php // if(is_file(MODULE_PATH.‘Conf/config‘.CONF_EXT)) // C(load_config(MODULE_PATH.‘Conf/config‘.CONF_EXT)); // // 加载应用模式对应的配置文件 // if(‘common‘ != APP_MODE && is_file(MODULE_PATH.‘Conf/config_‘.APP_MODE.CONF_EXT)) // C(load_config(MODULE_PATH.‘Conf/config_‘.APP_MODE.CONF_EXT)); // // 当前应用状态对应的配置文件 // if(APP_STATUS && is_file(MODULE_PATH.‘Conf/‘.APP_STATUS.CONF_EXT)) // C(load_config(MODULE_PATH.‘Conf/‘.APP_STATUS.CONF_EXT)); // // 加载模块别名定义 /home/www/www.domain.com/myapp/Module1/Conf/alias.php // if(is_file(MODULE_PATH.‘Conf/alias.php‘)) // Think::addMap(include MODULE_PATH.‘Conf/alias.php‘); // // 加载模块tags文件定义 /home/www/www.domain.com/myapp/Module1/Conf/tags.php // if(is_file(MODULE_PATH.‘Conf/tags.php‘)) // Hook::import(include MODULE_PATH.‘Conf/tags.php‘); // // 加载模块函数文件 /home/www/www.domain.com/myapp/Module1/Conf/function.php // if(is_file(MODULE_PATH.‘Common/function.php‘)) // include MODULE_PATH.‘Common/function.php‘; // // 加载模块的扩展配置文件 // load_ext_file(MODULE_PATH); // // { // // /home/www/www.domain.com/myapp/Module1/Common/Common/<LOAD_EXT_FILE,field1>.php // // /home/www/www.domain.com/myapp/Module1/Common/Conf/<LOAD_EXT_CONFIG,config1>.php // // } // // 获取控制器的命名空间(路径) // // controller // // 获取控制器和操作名 // // action // } Hook::listen(‘url_dispatch‘); } public static function run() { // 应用初始化标签 Hook::listen(‘app_init‘); // 执行执行app_init标记的行为,没有返回值 // { // Behavior\BuildLiteBehavior // } App::init(); // ******* 引入其他文件,解析路由,引入模块中的相关配置 ******* Hook::listen(‘app_begin‘); // { // Behavior\ReadHtmlCacheBehavior // } // Session初始化 if(!IS_CLI){ session(C(‘SESSION_OPTIONS‘)); } App::exec(); // ******* 根据解析出来的路由,执行代码 ******* Hook::listen(‘app_end‘); // { // Behavior\ShowPageTraceBehavior // } } public static function exec() { if(!preg_match(‘/^[A-Za-z](\/|\w)*$/‘,CONTROLLER_NAME)){ // 安全检测 $module = false; }elseif(C(‘ACTION_BIND_CLASS‘)){ // 操作绑定到类:模块\Controller\控制器\操作 $layer = C(‘DEFAULT_C_LAYER‘); if(is_dir(MODULE_PATH.$layer.‘/‘.CONTROLLER_NAME)){ // /home/www/www.domain.com/myapp/Module1/Controller/Ctrl1 $namespace = MODULE_NAME.‘\\‘.$layer.‘\\‘.CONTROLLER_NAME.‘\\‘; // \Module1\Controller\Ctrl1\ }else{ // 空控制器 $namespace = MODULE_NAME.‘\\‘.$layer.‘\\_empty\\‘; // \Module1\Controller\_empty\ } $actionName = strtolower(ACTION_NAME); if(class_exists($namespace.$actionName)){ // \Module1\Controller\Ctrl1\action1 $class = $namespace.$actionName; }elseif(class_exists($namespace.‘_empty‘)){ // \Module1\Controller\Ctrl1\_empty // 空操作 $class = $namespace.‘_empty‘; }else{ E(L(‘_ERROR_ACTION_‘).‘:‘.ACTION_NAME); } $module = new $class; // 操作绑定到类后 固定执行run入口 $action = ‘run‘; }else{ //创建控制器实例 $module = controller(CONTROLLER_NAME,CONTROLLER_PATH); // { // new \Module1\Controller\Ctrl1 // new \Addon\$_GET[‘addon‘]\Controller\Ctrl1 // } } if(!$module) { if(‘4e5e5d7364f443e28fbf0d3ae744a59a‘ == CONTROLLER_NAME) { header("Content-type:image/png"); exit(base64_decode(App::logo())); } // 是否定义Empty控制器 $module = A(‘Empty‘); // EmptyController if(!$module){ E(L(‘_CONTROLLER_NOT_EXIST_‘).‘:‘.CONTROLLER_NAME); } } // 获取当前操作名 支持动态路由 if(!isset($action)){ $action = ACTION_NAME.C(‘ACTION_SUFFIX‘); } try{ self::invokeAction($module,$action); // 执行行为方法 } catch (\ReflectionException $e) { // 方法调用发生异常后 引导到__call方法处理 $method = new \ReflectionMethod($module,‘__call‘); $method->invokeArgs($module,array($action,‘‘)); // { // EmptyController::__call() // Ctrl1Controller::__call() // } } return ; } }
thinkphp 3.2.3 - App.class.php 解析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。