/** * 构造函数 * * 构造应用程序对象,并且初始化根上下文对象 * * @param array $app_config */ protected function __construct(array $app_config) { $this->_appid = $app_config['APPID']; self::$_apps[$this->_appid] = $this; self::setAppConfig($this->_appid, $app_config); $this->_default_module = QApplication_Module::instance(null, $this->_appid); $this->context = QContext::instance(null, $this->_appid); // #IFDEF DEBUG QLog::log(__METHOD__, QLog::DEBUG); // #ENDIF // 设置默认的异常处理例程 // set_exception_handler(array($this, 'exceptionHandler')); }
/** * 构造函数 * * @param QReflection_Application $app * @param string $module_name */ function __construct(QReflection_Application $app, $module_name, $default_module_dir_layout = null, $module_dir_layout = null) { if (empty($default_module_dir_layout)) { $default_module_dir_layout = self::DEFAULT_MODULE_DIR_LAYOUT; } if (empty($module_dir_layout)) { $module_dir_layout = self::MODULE_DIR_LAYOUT; } /** * 检查指定的模块是否存在 * * 判断模块存在的标准: * - 在 modules 目录中是否存在以该模块名命名的子目录 */ if (empty($module_name) || $module_name == QApplication_Module::DEFAULT_MODULE_NAME) { $search = array('%ROOT_DIR%'); $replace = array($app->ROOT_DIR()); $dir = $default_module_dir_layout; $module_name = QApplication_Module::DEFAULT_MODULE_NAME; } else { if ($app->hasModule($module_name)) { $search = array('%ROOT_DIR%', '%MODULE_NAME%'); $replace = array($app->ROOT_DIR(), $module_name); $dir = $module_dir_layout; } else { throw new QReflection_UndefinedModule($app, $module_name); } } $this->_reflection_app = $app; $this->_reflection_module_dir = str_replace($search, $replace, $dir); $this->_module = QApplication_Module::instance($module_name, $app->APPID()); $this->_config = QApplication_Module::loadModuleConfig($module_name, $app->config()); }
/** * 返回指定模块的上下文对象 * * @param string $module_name * @param string $appid * * @return QContext */ static function instance($module_name = null, $appid = null) { if (empty($appid)) { $appid = QApplication_Abstract::defaultAppID(); } if (empty($module_name)) { $module_name = QApplication_Module::DEFAULT_MODULE_NAME; } if (!isset(self::$_instances[$appid][$module_name])) { new QContext(QApplication_Module::instance($module_name, $appid)); } return self::$_instances[$appid][$module_name]; }