예제 #1
0
파일: qcontext.php 프로젝트: fchaose/qeephp
 /**
  * 构造函数
  *
  * @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();
 }
예제 #2
0
파일: module.php 프로젝트: fchaose/qeephp
 /**
  * 载入模块的配置
  *
  * @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;
 }