Пример #1
0
 /**
  * Bootstraps the application by loading all its modules.
  * 
  * @param  AbstractApplication $application Application to be bootstrapped.
  * @param  string              $env         [optional] Environment in which the application should be ran. Default: `dev`.
  * @param  boolean             $debug       [optional] Should application be ran in debug mode? Default: `true`.
  */
 public function bootstrapApplication(AbstractApplication $application, $env = 'dev', $debug = true)
 {
     $application->setPhase(self::PHASE_BOOTSTRAP);
     $loadingModules = array();
     $moduleLoader = function (array $loadedModules, $self, array $allModules = array()) use(&$loadingModules, $env, $debug) {
         foreach ($loadedModules as $module) {
             if (in_array($module->getName(), $loadingModules)) {
                 continue;
             }
             $loadingModules[] = $module->getName();
             $allModules = $self($module->loadModules($env, $debug), $self, $allModules);
             $allModules[] = $module;
         }
         return $allModules;
     };
     $modules = $moduleLoader($application->loadModules($env, $debug), $moduleLoader);
     foreach ($modules as $module) {
         $application->addModule($module);
     }
 }