/** * Load a specific module by name. * * @param string $moduleName * @return mixed Module's Module class */ public function loadModule($moduleName) { if (isset($this->loadedModules[$moduleName])) { return $this->loadedModules[$moduleName]; } $class = $moduleName . '\\Module'; if (!class_exists($class)) { throw new Exception\RuntimeException(sprintf('Module (%s) could not be initialized because Module.php could not be found.', $moduleName)); } $module = new $class(); $event = new ModuleEvent(); $event->setModule($module); $this->events()->trigger(__FUNCTION__, $this, $event); $this->loadedModules[$moduleName] = $module; return $module; }