diff --git a/src/Bridges/NetteDI/MigrationsExtension.php b/src/Bridges/NetteDI/MigrationsExtension.php index 004916c4..c34916fc 100644 --- a/src/Bridges/NetteDI/MigrationsExtension.php +++ b/src/Bridges/NetteDI/MigrationsExtension.php @@ -89,7 +89,7 @@ public function loadConfiguration(): void // groups if ($config['groups'] === null) { - Validators::assertField($config, 'dir', 'string|Nette\PhpGenerator\PhpLiteral'); + Validators::assertField($config, 'dir', 'string|Nette\PhpGenerator\PhpLiteral|Nette\DI\Statement'); Validators::assertField($config, 'withDummyData', 'bool'); $config['groups'] = $this->createDefaultGroupConfiguration($config['dir'], $config['withDummyData']); } @@ -164,18 +164,19 @@ public function beforeCompile(): void /** * @param null|string|Statement $dbal - * @return string|ServiceDefinition */ - private function getDbalDefinition($dbal) + private function getDbalDefinition($dbal): string { $factory = $this->getDbalFactory($dbal); if ($factory) { - return $this->getContainerBuilder() + $this->getContainerBuilder() ->addDefinition($this->prefix('dbal')) ->setType(Nextras\Migrations\IDbal::class) ->setFactory($factory); + return '@' . $this->prefix('dbal'); + } elseif ($dbal === null) { return '@Nextras\Migrations\IDbal'; @@ -207,20 +208,20 @@ private function getDbalFactory($dbal) /** - * @param null|string|Statement $driver - * @param string|ServiceDefinition $dbal - * @return string|ServiceDefinition + * @param null|string|Statement $driver */ - private function getDriverDefinition($driver, $dbal) + private function getDriverDefinition($driver, string $dbal): string { $factory = $this->getDriverFactory($driver, $dbal); if ($factory) { - return $this->getContainerBuilder() + $this->getContainerBuilder() ->addDefinition($this->prefix('driver')) ->setType(Nextras\Migrations\IDriver::class) ->setFactory($factory); + return '@' . $this->prefix('driver'); + } elseif ($driver === null) { return '@Nextras\Migrations\IDriver'; @@ -231,11 +232,10 @@ private function getDriverDefinition($driver, $dbal) /** - * @param null|string|Statement $driver - * @param string|ServiceDefinition $dbal + * @param null|string|Statement $driver * @return string|Statement|null */ - private function getDriverFactory($driver, $dbal) + private function getDriverFactory($driver, string $dbal) { if ($driver instanceof Statement) { return $this->filterArguments([$driver])[0]; @@ -251,18 +251,19 @@ private function getDriverFactory($driver, $dbal) /** * @param null|string|Statement $printer - * @return string|ServiceDefinition */ - private function getPrinterDefinition($printer) + private function getPrinterDefinition($printer): string { $factory = $this->getPrinterFactory($printer); if ($factory) { - return $this->getContainerBuilder() + $this->getContainerBuilder() ->addDefinition($this->prefix('printer')) ->setType(Nextras\Migrations\IPrinter::class) ->setFactory($factory); + return '@' . $this->prefix('printer'); + } elseif ($printer === null) { return '@Nextras\Migrations\IPrinter'; @@ -294,12 +295,17 @@ private function getPrinterFactory($printer) /** - * @param string|Nette\PhpGenerator\PhpLiteral $dir + * @param string|Nette\PhpGenerator\PhpLiteral|Statement $dir * @return array, generator?: ServiceDefinition|null}> */ private function createDefaultGroupConfiguration($dir, bool $withDummyData): array { - if ($dir instanceof Nette\PhpGenerator\PhpLiteral) { + if ($dir instanceof Statement) { + $append = function (string $path) use ($dir): Statement { + return new Statement('? . ?', [$dir, $path]); + }; + + } elseif ($dir instanceof Nette\PhpGenerator\PhpLiteral) { $append = function (string $path) use ($dir): Nette\PhpGenerator\PhpLiteral { return ContainerBuilder::literal('? . ?', [$dir, $path]); }; @@ -347,7 +353,7 @@ private function createGroupDefinitions(array $groups): array $groupDefinitions = []; foreach ($groups as $groupName => $groupConfig) { - Validators::assertField($groupConfig, 'directory', 'string|Nette\PhpGenerator\PhpLiteral'); + Validators::assertField($groupConfig, 'directory', 'string|Nette\PhpGenerator\PhpLiteral|Nette\DI\Statement'); $enabled = isset($groupConfig['enabled']) ? $groupConfig['enabled'] : true; $directory = $groupConfig['directory']; @@ -371,11 +377,10 @@ private function createGroupDefinitions(array $groups): array /** - * @param string|ServiceDefinition $driver - * @param array $phpParams + * @param array $phpParams * @return list */ - private function createExtensionHandlerDefinitions($driver, array $phpParams): array + private function createExtensionHandlerDefinitions(string $driver, array $phpParams): array { $builder = $this->getContainerBuilder(); @@ -395,12 +400,14 @@ private function createExtensionHandlerDefinitions($driver, array $phpParams): a } - private function createConfigurationDefinition(): ServiceDefinition + private function createConfigurationDefinition(): string { - return $this->getContainerBuilder() + $this->getContainerBuilder() ->addDefinition($this->prefix('configuration')) ->setType(Nextras\Migrations\IConfiguration::class) ->setFactory(Nextras\Migrations\Configurations\Configuration::class); + + return '@' . $this->prefix('configuration'); } @@ -416,12 +423,7 @@ private function createDoctrineStructureDiffGeneratorDefinition(?string $ignored } - /** - * @param string|ServiceDefinition $driver - * @param string|ServiceDefinition $configuration - * @param string|ServiceDefinition $printer - */ - private function createSymfonyCommandDefinitions($driver, $configuration, $printer): void + private function createSymfonyCommandDefinitions(string $driver, string $configuration, string $printer): void { $builder = $this->getContainerBuilder(); $builder->addExcludedClasses([Nextras\Migrations\Bridges\SymfonyConsole\BaseCommand::class]); @@ -445,14 +447,6 @@ private function createSymfonyCommandDefinitions($driver, $configuration, $print private function filterArguments(array $arguments): array { - if (method_exists(Nette\DI\Helpers::class, 'filterArguments')) { - return Nette\DI\Helpers::filterArguments($arguments); - - } elseif (method_exists(Nette\DI\Compiler::class, 'filterArguments')) { - return Nette\DI\Compiler::filterArguments($arguments); - - } else { - throw new Nextras\Migrations\LogicException(); - } + return Nette\DI\Helpers::filterArguments($arguments); } } diff --git a/tests/cases/integration/nette-di/MigrationsExtension.configB.neon b/tests/cases/integration/nette-di/MigrationsExtension.configB.neon index 99bab8af..b960b7f3 100644 --- a/tests/cases/integration/nette-di/MigrationsExtension.configB.neon +++ b/tests/cases/integration/nette-di/MigrationsExtension.configB.neon @@ -4,7 +4,7 @@ extensions: migrations: dir: migrations driver: mysql - dbal: Nextras\Migrations\Bridges\Dibi\DibiAdapter(...) + dbal: Nextras\Migrations\Bridges\Dibi\DibiAdapter(_) services: - Dibi\Connection(%dibiConfig%) diff --git a/tests/cases/integration/nette-di/MigrationsExtension.configC.neon b/tests/cases/integration/nette-di/MigrationsExtension.configC.neon index 64042dc3..b67f2aa7 100644 --- a/tests/cases/integration/nette-di/MigrationsExtension.configC.neon +++ b/tests/cases/integration/nette-di/MigrationsExtension.configC.neon @@ -7,4 +7,4 @@ migrations: services: - Dibi\Connection(%dibiConfig%) - - Nextras\Migrations\Bridges\Dibi\DibiAdapter(...) + - Nextras\Migrations\Bridges\Dibi\DibiAdapter diff --git a/tests/cases/integration/nette-di/MigrationsExtension.configD.neon b/tests/cases/integration/nette-di/MigrationsExtension.configD.neon index ea019f15..5929a285 100644 --- a/tests/cases/integration/nette-di/MigrationsExtension.configD.neon +++ b/tests/cases/integration/nette-di/MigrationsExtension.configD.neon @@ -3,8 +3,8 @@ extensions: migrations: dir: migrations - driver: Nextras\Migrations\Drivers\MySqlDriver(...) + driver: Nextras\Migrations\Drivers\MySqlDriver(@Nextras\Migrations\IDbal) services: - Dibi\Connection(%dibiConfig%) - - Nextras\Migrations\Bridges\Dibi\DibiAdapter(...) + - Nextras\Migrations\Bridges\Dibi\DibiAdapter diff --git a/tests/cases/integration/nette-di/MigrationsExtension.configE.neon b/tests/cases/integration/nette-di/MigrationsExtension.configE.neon index 759ec361..2d5b08d3 100644 --- a/tests/cases/integration/nette-di/MigrationsExtension.configE.neon +++ b/tests/cases/integration/nette-di/MigrationsExtension.configE.neon @@ -7,4 +7,4 @@ migrations: services: - Dibi\Connection(%dibiConfig%) - Nextras\Migrations\Drivers\MySqlDriver - - Nextras\Migrations\Bridges\Dibi\DibiAdapter(...) + - Nextras\Migrations\Bridges\Dibi\DibiAdapter diff --git a/tests/cases/integration/nette-di/MigrationsExtension.configF.neon b/tests/cases/integration/nette-di/MigrationsExtension.configF.neon index 8ee958d2..25803e53 100644 --- a/tests/cases/integration/nette-di/MigrationsExtension.configF.neon +++ b/tests/cases/integration/nette-di/MigrationsExtension.configF.neon @@ -4,7 +4,7 @@ extensions: migrations: dir: migrations dbal: dibi - driver: Nextras\Migrations\Drivers\MySqlDriver(..., m) + driver: Nextras\Migrations\Drivers\MySqlDriver(_, m) services: - Dibi\Connection(%dibiConfig%) diff --git a/tests/cases/integration/nette-di/MigrationsExtension.diffGenerator.configA.neon b/tests/cases/integration/nette-di/MigrationsExtension.diffGenerator.configA.neon index a2ff6f30..b4e2a5d7 100644 --- a/tests/cases/integration/nette-di/MigrationsExtension.diffGenerator.configA.neon +++ b/tests/cases/integration/nette-di/MigrationsExtension.diffGenerator.configA.neon @@ -8,6 +8,8 @@ migrations: diffGenerator: doctrine services: - - Doctrine\ORM\Tools\Setup::createXMLMetadataConfiguration([%doctrineDir%], true) + - Doctrine\ORM\ORMSetup::createXMLMetadataConfiguration([%doctrineDir%], true) - Doctrine\DBAL\DriverManager::getConnection(%doctrineConfig%, @Doctrine\ORM\Configuration) - - Doctrine\ORM\EntityManager::create(@Doctrine\DBAL\Connection, @Doctrine\ORM\Configuration) + - + type: Doctrine\ORM\EntityManagerInterface + factory: Doctrine\ORM\EntityManager::create(@Doctrine\DBAL\Connection, @Doctrine\ORM\Configuration) diff --git a/tests/cases/integration/nette-di/MigrationsExtension.diffGenerator.configB.neon b/tests/cases/integration/nette-di/MigrationsExtension.diffGenerator.configB.neon index 604200fb..50ffeed5 100644 --- a/tests/cases/integration/nette-di/MigrationsExtension.diffGenerator.configB.neon +++ b/tests/cases/integration/nette-di/MigrationsExtension.diffGenerator.configB.neon @@ -7,6 +7,8 @@ migrations: driver: mysql services: - - Doctrine\ORM\Tools\Setup::createXMLMetadataConfiguration([%doctrineDir%], true) + - Doctrine\ORM\ORMSetup::createXMLMetadataConfiguration([%doctrineDir%], true) - Doctrine\DBAL\DriverManager::getConnection(%doctrineConfig%, @Doctrine\ORM\Configuration) - - Doctrine\ORM\EntityManager::create(@Doctrine\DBAL\Connection, @Doctrine\ORM\Configuration) + - + type: Doctrine\ORM\EntityManagerInterface + factory: Doctrine\ORM\EntityManager::create(@Doctrine\DBAL\Connection, @Doctrine\ORM\Configuration) diff --git a/tests/cases/integration/nette-di/MigrationsExtension.phpt b/tests/cases/integration/nette-di/MigrationsExtension.phpt index de1ee7de..1efa3b62 100644 --- a/tests/cases/integration/nette-di/MigrationsExtension.phpt +++ b/tests/cases/integration/nette-di/MigrationsExtension.phpt @@ -73,10 +73,6 @@ class MigrationsExtensionTest extends TestCase public function testDynamicContainerParameters(): void { - if (!method_exists(Nette\DI\Compiler::class, 'setDynamicParameterNames')) { - Environment::skip('Required Nette >= 2.4.7'); - } - $container = $this->createContainer('dynamicParameters', [ 'rootDir' => '__rootDir__', ]); diff --git a/tests/matrix/nette-di/nette-3.0.sh b/tests/matrix/nette-di/nette-3.0.sh index ea8719ea..3eeb93b9 100644 --- a/tests/matrix/nette-di/nette-3.0.sh +++ b/tests/matrix/nette-di/nette-3.0.sh @@ -6,4 +6,5 @@ COMPOSER_REQUIRE="$COMPOSER_REQUIRE dibi/dibi:*" COMPOSER_REQUIRE="$COMPOSER_REQUIRE doctrine/dbal:^2.13|^3.0" COMPOSER_REQUIRE="$COMPOSER_REQUIRE doctrine/orm:^2.11" COMPOSER_REQUIRE="$COMPOSER_REQUIRE doctrine/cache:^1.11" +COMPOSER_REQUIRE="$COMPOSER_REQUIRE symfony/cache:*" COMPOSER_REQUIRE="$COMPOSER_REQUIRE symfony/console:*" diff --git a/tests/matrix/nette-di/nette-2.4.sh b/tests/matrix/nette-di/nette-3.1.sh old mode 100644 new mode 100755 similarity index 66% rename from tests/matrix/nette-di/nette-2.4.sh rename to tests/matrix/nette-di/nette-3.1.sh index f061c5fc..919128c9 --- a/tests/matrix/nette-di/nette-2.4.sh +++ b/tests/matrix/nette-di/nette-3.1.sh @@ -1,9 +1,10 @@ #!/usr/bin/env bash -PHP_VERSION_MIN="70100" -PHP_VERSION_MAX="80099" -COMPOSER_REQUIRE="$COMPOSER_REQUIRE nette/di:2.4.*" +PHP_VERSION_MIN="80000" +PHP_VERSION_MAX="80399" +COMPOSER_REQUIRE="$COMPOSER_REQUIRE nette/di:3.1.*" COMPOSER_REQUIRE="$COMPOSER_REQUIRE dibi/dibi:*" COMPOSER_REQUIRE="$COMPOSER_REQUIRE doctrine/dbal:^2.13|^3.0" COMPOSER_REQUIRE="$COMPOSER_REQUIRE doctrine/orm:^2.11" COMPOSER_REQUIRE="$COMPOSER_REQUIRE doctrine/cache:^1.11" +COMPOSER_REQUIRE="$COMPOSER_REQUIRE symfony/cache:*" COMPOSER_REQUIRE="$COMPOSER_REQUIRE symfony/console:*" diff --git a/tests/matrix/nette-di/nette-3.2.sh b/tests/matrix/nette-di/nette-3.2.sh new file mode 100755 index 00000000..fc0e52b6 --- /dev/null +++ b/tests/matrix/nette-di/nette-3.2.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +PHP_VERSION_MIN="80100" +PHP_VERSION_MAX="80499" +COMPOSER_REQUIRE="$COMPOSER_REQUIRE nette/di:3.2.*" +COMPOSER_REQUIRE="$COMPOSER_REQUIRE dibi/dibi:*" +COMPOSER_REQUIRE="$COMPOSER_REQUIRE doctrine/dbal:^2.13|^3.0" +COMPOSER_REQUIRE="$COMPOSER_REQUIRE doctrine/orm:^2.11" +COMPOSER_REQUIRE="$COMPOSER_REQUIRE doctrine/cache:^1.11" +COMPOSER_REQUIRE="$COMPOSER_REQUIRE symfony/cache:*" +COMPOSER_REQUIRE="$COMPOSER_REQUIRE symfony/console:*"