コード例 #1
0
 /**
  * Get NBFrameObjectHandler Children Class Singleton Instance
  *
  * @param string $className
  * @param string $dirName
  * @param string $origDirName
  * @return NBFrameObjectHandler
  */
 function &getHandler($className, &$environment)
 {
     static $sHandlerArr;
     static $sNullLanguageManager = null;
     $ret = false;
     $dirName = '';
     $classPath = str_replace('.', '/', basename($className));
     $classBaseName = basename($classPath);
     $classOffset = dirname('/' . $classPath);
     if ($classOffset == '/') {
         $classOffset = '';
     }
     $classOffsetName = str_replace('/', '.', dirname($classPath));
     if (preg_match('/^NBFrame\\.(.*)/', $className, $match)) {
         $key = $className;
     } else {
         if (!empty($environment)) {
             $dirName = $environment->getDirName();
             $key = $environment->prefix($className);
         } else {
             $key = $className;
         }
     }
     $handlerClassName = $classBaseName . 'Handler';
     if (!isset($sHandlerArr[$key])) {
         if (preg_match('/^NBFrame\\.(.*)/', $className, $match)) {
             NBFrame::using('Object');
             NBFrame::using('ObjectHandler');
             $className = $match[1];
             NBFrame::using($className);
             $classBaseName = 'NBFrame' . $classBaseName;
             $handlerClassName = $classBaseName . 'Handler';
         } else {
             if (!empty($environment) && !class_exists($handlerClassName)) {
                 NBFrame::using('Object');
                 NBFrame::using('ObjectHandler');
                 $fileName = $environment->findFile($className . '.class.php', 'class');
                 if ($fileName) {
                     require_once $fileName;
                 }
             }
         }
         if (class_exists($dirName . '_' . $handlerClassName)) {
             // This handler may be Module custom handler
             ($sHandlerArr[$key] =& new $dirName()) . '_' . $handlerClassName($GLOBALS['xoopsDB']);
             $handler =& $sHandlerArr[$key];
         } else {
             if (class_exists($handlerClassName)) {
                 $sHandlerArr[$key] =& new $handlerClassName($GLOBALS['xoopsDB']);
                 $handler =& $sHandlerArr[$key];
             } else {
                 if (preg_match('/^realname\\.(\\w+)/i', $className, $match)) {
                     // Automatic Creating Handler Class with Table Names
                     $handlerClassName = 'NBFrameRealTable' . $handlerClassName;
                     $entityClassName = 'NBFrameRealTable' . $classBaseName;
                     $sHandlerArr[$key] =& new NBFrameObjectHandler($GLOBALS['xoopsDB']);
                     $handler =& $sHandlerArr[$key];
                     $handler->setTableBaseName($match[1]);
                     $handler->mUseModuleTablePrefix = false;
                     $handler->mClassName = $handlerClassName;
                     $handler->mEntityClassName = $entityClassName;
                 }
             }
         }
         if ($handler && !empty($environment)) {
             if ($handler->mUseModuleTablePrefix) {
                 $handler->setTableBaseName($dirName . '_' . $handler->getTableBaseName());
             }
             $handler->mEnvironment =& NBFrame::makeClone($environment);
             $handler->mLanguageManager =& $handler->mEnvironment->getLanguageManager();
         } else {
             if (empty($sNullLanguageManager)) {
                 NBFrame::using('Language');
                 $sNullLanguageManager =& new NBFrameLanguage(NBFrame::null());
             }
             $handler->mLanguageManager =& $sNullLanguageManager;
         }
     } else {
         $handler =& $sHandlerArr[$key];
     }
     return $handler;
 }
コード例 #2
0
 function NBFrameBase(&$environment)
 {
     $this->mEnvironment =& NBFrame::makeClone($environment);
     $this->mLanguage =& $this->mEnvironment->getLanguageManager();
 }