/**
  * Initializes application modules
  */
 public function initModules(Config $config)
 {
     $moduleLoader = new ModuleLoader($this->getDI());
     //registers modules defined in modules.php file
     $modulesFile = $config->application->configDir . Loader::MODULE_STATIC_FILE;
     /**
      * For non-default environment modules are being dumped in each application start
      */
     if (!file_exists($modulesFile) || $this->getDI()->get('environment') != Constants::DEFAULT_ENV) {
         $modules = $moduleLoader->dump($config->application->moduleDir, $config->application->configDir);
     } else {
         $modules = (require $modulesFile);
     }
     if (!is_array($modules)) {
         throw new InvalidModulesListException();
     }
     $this->getApplication()->registerModules($modules);
     //prepares modules configurations
     foreach ($this->getApplication()->getModules() as $module) {
         $moduleConfigFile = dirname($module['path']) . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.php';
         if (file_exists($moduleConfigFile)) {
             $moduleConfig = (require $moduleConfigFile);
             if (is_array($moduleConfig)) {
                 $config->merge($moduleConfig);
             }
         }
     }
     $this->getDI()->set('modules', function () {
         return $this->getApplication()->getModules();
     });
 }
Beispiel #2
0
 public function testModuleRegister()
 {
     $moduleLoader = new ModuleLoader(DI::getDefault());
     $modules = $moduleLoader->dump(TESTS_ROOT_DIR . '/fixtures/app/modules/', TESTS_ROOT_DIR . '/fixtures/app/config/');
     $app = new Application();
     $app->registerModules($modules);
     $this->assertSameSize($modules, $app->getModules());
     $this->assertTrue(class_exists('Test\\Models\\Fake'));
     $this->assertTrue(class_exists('Test\\Components\\Fake'));
     $this->assertTrue(class_exists('Test\\Services\\Fake'));
 }
Beispiel #3
0
 public function testShouldLoadAllModulesFromApplication()
 {
     $moduleLoader = new ModuleLoader(DI::getDefault());
     $modules = $moduleLoader->dump(TESTS_ROOT_DIR . '/fixtures/app/modules/', TESTS_ROOT_DIR . '/fixtures/app/config/');
     $this->assertInternalType('array', $modules);
     $this->assertTrue(file_exists(TESTS_ROOT_DIR . '/fixtures/app/config/modules.php'));
     $modulesArray = (require TESTS_ROOT_DIR . '/fixtures/app/config/modules.php');
     $this->assertInternalType('array', $modulesArray);
     $this->assertInternalType('string', ModuleLoader::MODULE_SETTINGS_FILE);
     $this->assertArrayHasKey('Foo', $modulesArray);
     $this->assertArrayHasKey('FakeVendorModule', $modulesArray);
 }
Beispiel #4
0
 /**
  * Copies all assets vendor modules
  * @internal
  */
 private function copyVendorAssets()
 {
     $modules = [];
     $moduleLoader = new Loader($this->di);
     $moduleLoader->dumpModulesFromVendor($modules);
     $publicAssetsDir = $this->getOption('d', APP_ROOT . DIRECTORY_SEPARATOR . 'public' . DIRECTORY_SEPARATOR . 'assets');
     if ($modules) {
         foreach ($modules as $moduleName => $module) {
             $assetsDir = dirname($module['path']) . '/../assets';
             if (file_exists($assetsDir)) {
                 $this->putText("- " . $moduleName . "...");
                 $this->copyRecursive($assetsDir, $publicAssetsDir);
             }
         }
     }
 }
Beispiel #5
0
 public function testShouldAddModuleRoutes()
 {
     $routerAdapter = new \Vegas\Mvc\Router\Adapter\Standard(DI::getDefault());
     $router = new \Vegas\Mvc\Router(DI::getDefault(), $routerAdapter);
     $moduleLoader = new ModuleLoader(DI::getDefault());
     $modules = $moduleLoader->dump(TESTS_ROOT_DIR . '/fixtures/app/modules/', TESTS_ROOT_DIR . '/fixtures/app/config/');
     foreach ($modules as $module) {
         $router->addModuleRoutes($module);
     }
     $router->setup();
     $defaultRouter = $router->getRouter();
     $defaultRouter->handle('/test/fake/test');
     $route = $defaultRouter->getRouteByName('testfake');
     $matchedRoute = $defaultRouter->getMatchedRoute();
     $this->assertNotEmpty($matchedRoute);
     $this->assertEquals($route->getPaths()['controller'], $defaultRouter->getControllerName());
     $this->assertEquals($route->getPaths()['action'], $defaultRouter->getActionName());
     $this->assertEquals($route->getPaths()['module'], $defaultRouter->getModuleName());
     $this->assertEquals($route->getName(), $matchedRoute->getName());
     $this->assertEquals($route->getPaths()['action'], $matchedRoute->getPaths()['action']);
     $this->assertEquals($route->getPaths()['controller'], $matchedRoute->getPaths()['controller']);
     $this->assertEquals($route->getPaths()['module'], $matchedRoute->getPaths()['module']);
 }