Example #1
0
 /**
  * 构造函数
  *
  * 构造应用程序对象,并且初始化根上下文对象
  *
  * @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'));
 }
Example #2
0
 /**
  * 构造函数
  *
  * @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());
 }
Example #3
0
 /**
  * 返回指定模块的上下文对象
  *
  * @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];
 }