Exemple #1
0
 public static function moduleFactory($modulename)
 {
     global $_PATH;
     $xRegCheck = explode('.', $modulename);
     $xRegName = $xRegCheck[0] . strtoupper($xRegCheck[1][0]) . substr($xRegCheck[1], 1);
     if (xRegistry::exists($xRegName)) {
         return xRegistry::get($xRegName);
     }
     $module = explode('.', $modulename);
     xCore::callCommonInstance($module[0]);
     //в случае xfront должен быть подключен модуль front
     if ($module[1] == 'xfront' && file_exists($inst = xConfig::get('PATH', 'MODULES') . $module[0] . '/' . $module[0] . '.front.class.php')) {
         require_once xConfig::get('PATH', 'MODULES') . $module[0] . '/' . $module[0] . '.front.class.php';
     }
     if ($module[1] == 'cron') {
         xCore::moduleFactory($module[0] . '.back');
     }
     $moduleInstancePath = xConfig::get('PATH', 'MODULES') . $module[0] . '/' . $module[0] . '.' . $module[1] . '.class.php';
     require_once $moduleInstancePath;
     $module[1][0] = strtoupper($module[1][0]);
     //calling class
     if (class_exists($classname = $module[0] . $module[1])) {
         //все конструкторы класса без параметров
         xRegistry::get('EVM')->fire($modulename . ':beforeInit');
         xRegistry::set($classname, $m = new $classname());
         xRegistry::get('EVM')->fire($modulename . ':afterInit', array('instance' => $m));
         xConfig::set('calledModules', $module[0], $m);
         //готовый класс
         return $m;
     }
 }