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; } }