Esempio n. 1
0
 /**
  * Load a module by class name.
  *
  * @param string                       $moduleClass The module class to load.
  * @param Module[]                     $modules     The list of already loaded modules.
  * @param array                        $moduleList  The complete module list.
  * @param DependencyInjectionContainer $dic         The dependency injection container to use for the module.
  *
  * @return void
  *
  * @throws ConfigurationException
  */
 private function loadModule($moduleClass, array &$modules, array $moduleList, DependencyInjectionContainer $dic)
 {
     /**
      * @var Module $module
      */
     $module = $dic->make($moduleClass);
     if (!$module instanceof Module) {
         throw new ConfigurationException(get_class($module) . ' was configured as a module, but doesn\'t implement ' . Module::class);
     }
     if (!\in_array($module, $modules)) {
         $dic->share($module);
         $this->loadRequiredModules($module, $modules, $moduleList, $dic);
         $modules[] = $module;
     }
 }