/** * 构造函数 * * @param QApplication_Module $module */ protected function __construct(QApplication_Module $module) { $module_name = $module->moduleName(); $appid = $module->APPID(); self::$_instances[$appid][$module_name] = $this; $this->_app = QApplication_Abstract::app($appid); $this->_module = $module; if ($module_name == QApplication_Module::DEFAULT_MODULE_NAME) { // 初始化应用程序默认的上下文对象 $this->_config = (require Q_DIR . '/_config/default_config.php'); $this->setIni($module->config()); } else { // 构造其他模块的上下文对象 $root = self::$_instances[$appid][QApplication_Module::DEFAULT_MODULE_NAME]; $this->module_name = $module_name; $this->namespace = $root->namespace; $this->controller_name = $root->controller_name; $this->action_name = $root->action_name; $this->_router = $root->router(); $this->_params = $root->_params; $this->_parent = $root; // 载入该模块的配置 $this->_config = $module->config(); $app_config = QApplication_Abstract::getAppConfig($appid); Q::import($app_config['ROOT_DIR'] . "/modules/{$module_name}/model"); Q::import($app_config['ROOT_DIR'] . "/modules/{$module_name}"); } $this->_name = $module_name; $this->_initOneTime(); $this->_prepare(); }
/** * 载入模块的配置 * * @return array */ function loadCachedModuleConfig() { if ($this->_appid == QApplication_Abstract::DEFAULT_APPID) { return include Q_DIR . '/_config/default_config.php'; } $app_config = QApplication_Abstract::getAppConfig($this->_appid); if (empty($app_config['CONFIG_CACHED'])) { // 不使用缓存,直接读取配置文件 return self::loadModuleConfig($this->_module_name, $app_config); } // 确定缓存 ID $run_mode = !empty($app_config['RUN_MODE']) ? $app_config['RUN_MODE'] : Q::RUN_MODE_DEPLOY; if ($this->_module_name) { $cache_id = "{$app_config['APPID']}.module.{$this->_module_name}.config.{$run_mode}"; } else { $cache_id = "{$app_config['APPID']}.app.config.{$run_mode}"; } // 如果有必要,构造缓存对象 if (is_null($this->_cache_backend)) { $class = $app_config['CONFIG_CACHE_BACKEND']; $default_policy = array('life_time' => $app_config['CONFIG_CACHE_LIFETIME'], 'serialize' => true, 'cache_dir' => $app_config['CONFIG_CACHE_DIR']); $this->_cache_backend = new $class($default_policy); } // 尝试载入缓存的配置信息 $config = $this->_cache_backend->get($cache_id); if (is_array($config)) { return $config; } // 读取并解析配置,然后写入缓存 $config = self::loadModuleConfig($this->_module_name, $app_config); $this->_cache_backend->set($cache_id, $config); return $config; }