/** * 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(); }); }
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')); }
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); }
/** * 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); } } } }
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']); }