@@ -89,7 +89,7 @@ public function loadConfiguration(): void
8989
9090 // groups
9191 if ($ config ['groups ' ] === null ) {
92- Validators::assertField ($ config , 'dir ' , 'string|Nette\PhpGenerator\PhpLiteral ' );
92+ Validators::assertField ($ config , 'dir ' , 'string|Nette\PhpGenerator\PhpLiteral|Nette\DI\Statement ' );
9393 Validators::assertField ($ config , 'withDummyData ' , 'bool ' );
9494 $ config ['groups ' ] = $ this ->createDefaultGroupConfiguration ($ config ['dir ' ], $ config ['withDummyData ' ]);
9595 }
@@ -164,18 +164,19 @@ public function beforeCompile(): void
164164
165165 /**
166166 * @param null|string|Statement $dbal
167- * @return string|ServiceDefinition
168167 */
169- private function getDbalDefinition ($ dbal )
168+ private function getDbalDefinition ($ dbal ): string
170169 {
171170 $ factory = $ this ->getDbalFactory ($ dbal );
172171
173172 if ($ factory ) {
174- return $ this ->getContainerBuilder ()
173+ $ this ->getContainerBuilder ()
175174 ->addDefinition ($ this ->prefix ('dbal ' ))
176175 ->setType (Nextras \Migrations \IDbal::class)
177176 ->setFactory ($ factory );
178177
178+ return '@ ' . $ this ->prefix ('dbal ' );
179+
179180 } elseif ($ dbal === null ) {
180181 return '@Nextras\Migrations\IDbal ' ;
181182
@@ -207,20 +208,20 @@ private function getDbalFactory($dbal)
207208
208209
209210 /**
210- * @param null|string|Statement $driver
211- * @param string|ServiceDefinition $dbal
212- * @return string|ServiceDefinition
211+ * @param null|string|Statement $driver
213212 */
214- private function getDriverDefinition ($ driver , $ dbal )
213+ private function getDriverDefinition ($ driver , string $ dbal ): string
215214 {
216215 $ factory = $ this ->getDriverFactory ($ driver , $ dbal );
217216
218217 if ($ factory ) {
219- return $ this ->getContainerBuilder ()
218+ $ this ->getContainerBuilder ()
220219 ->addDefinition ($ this ->prefix ('driver ' ))
221220 ->setType (Nextras \Migrations \IDriver::class)
222221 ->setFactory ($ factory );
223222
223+ return '@ ' . $ this ->prefix ('driver ' );
224+
224225 } elseif ($ driver === null ) {
225226 return '@Nextras\Migrations\IDriver ' ;
226227
@@ -231,11 +232,10 @@ private function getDriverDefinition($driver, $dbal)
231232
232233
233234 /**
234- * @param null|string|Statement $driver
235- * @param string|ServiceDefinition $dbal
235+ * @param null|string|Statement $driver
236236 * @return string|Statement|null
237237 */
238- private function getDriverFactory ($ driver , $ dbal )
238+ private function getDriverFactory ($ driver , string $ dbal )
239239 {
240240 if ($ driver instanceof Statement) {
241241 return $ this ->filterArguments ([$ driver ])[0 ];
@@ -251,18 +251,19 @@ private function getDriverFactory($driver, $dbal)
251251
252252 /**
253253 * @param null|string|Statement $printer
254- * @return string|ServiceDefinition
255254 */
256- private function getPrinterDefinition ($ printer )
255+ private function getPrinterDefinition ($ printer ): string
257256 {
258257 $ factory = $ this ->getPrinterFactory ($ printer );
259258
260259 if ($ factory ) {
261- return $ this ->getContainerBuilder ()
260+ $ this ->getContainerBuilder ()
262261 ->addDefinition ($ this ->prefix ('printer ' ))
263262 ->setType (Nextras \Migrations \IPrinter::class)
264263 ->setFactory ($ factory );
265264
265+ return '@ ' . $ this ->prefix ('printer ' );
266+
266267 } elseif ($ printer === null ) {
267268 return '@Nextras\Migrations\IPrinter ' ;
268269
@@ -294,12 +295,17 @@ private function getPrinterFactory($printer)
294295
295296
296297 /**
297- * @param string|Nette\PhpGenerator\PhpLiteral $dir
298+ * @param string|Nette\PhpGenerator\PhpLiteral|Statement $dir
298299 * @return array<string, array{enabled?: bool, directory: string, dependencies?: list<string>, generator?: ServiceDefinition|null}>
299300 */
300301 private function createDefaultGroupConfiguration ($ dir , bool $ withDummyData ): array
301302 {
302- if ($ dir instanceof Nette \PhpGenerator \PhpLiteral) {
303+ if ($ dir instanceof Statement) {
304+ $ append = function (string $ path ) use ($ dir ): Statement {
305+ return new Statement ('? . ? ' , [$ dir , $ path ]);
306+ };
307+
308+ } elseif ($ dir instanceof Nette \PhpGenerator \PhpLiteral) {
303309 $ append = function (string $ path ) use ($ dir ): Nette \PhpGenerator \PhpLiteral {
304310 return ContainerBuilder::literal ('? . ? ' , [$ dir , $ path ]);
305311 };
@@ -347,7 +353,7 @@ private function createGroupDefinitions(array $groups): array
347353 $ groupDefinitions = [];
348354
349355 foreach ($ groups as $ groupName => $ groupConfig ) {
350- Validators::assertField ($ groupConfig , 'directory ' , 'string|Nette\PhpGenerator\PhpLiteral ' );
356+ Validators::assertField ($ groupConfig , 'directory ' , 'string|Nette\PhpGenerator\PhpLiteral|Nette\DI\Statement ' );
351357
352358 $ enabled = isset ($ groupConfig ['enabled ' ]) ? $ groupConfig ['enabled ' ] : true ;
353359 $ directory = $ groupConfig ['directory ' ];
@@ -371,11 +377,10 @@ private function createGroupDefinitions(array $groups): array
371377
372378
373379 /**
374- * @param string|ServiceDefinition $driver
375- * @param array<string, mixed> $phpParams
380+ * @param array<string, mixed> $phpParams
376381 * @return list<ServiceDefinition>
377382 */
378- private function createExtensionHandlerDefinitions ($ driver , array $ phpParams ): array
383+ private function createExtensionHandlerDefinitions (string $ driver , array $ phpParams ): array
379384 {
380385 $ builder = $ this ->getContainerBuilder ();
381386
@@ -395,12 +400,14 @@ private function createExtensionHandlerDefinitions($driver, array $phpParams): a
395400 }
396401
397402
398- private function createConfigurationDefinition (): ServiceDefinition
403+ private function createConfigurationDefinition (): string
399404 {
400- return $ this ->getContainerBuilder ()
405+ $ this ->getContainerBuilder ()
401406 ->addDefinition ($ this ->prefix ('configuration ' ))
402407 ->setType (Nextras \Migrations \IConfiguration::class)
403408 ->setFactory (Nextras \Migrations \Configurations \Configuration::class);
409+
410+ return '@ ' . $ this ->prefix ('configuration ' );
404411 }
405412
406413
@@ -416,12 +423,7 @@ private function createDoctrineStructureDiffGeneratorDefinition(?string $ignored
416423 }
417424
418425
419- /**
420- * @param string|ServiceDefinition $driver
421- * @param string|ServiceDefinition $configuration
422- * @param string|ServiceDefinition $printer
423- */
424- private function createSymfonyCommandDefinitions ($ driver , $ configuration , $ printer ): void
426+ private function createSymfonyCommandDefinitions (string $ driver , string $ configuration , string $ printer ): void
425427 {
426428 $ builder = $ this ->getContainerBuilder ();
427429 $ builder ->addExcludedClasses ([Nextras \Migrations \Bridges \SymfonyConsole \BaseCommand::class]);
@@ -445,14 +447,6 @@ private function createSymfonyCommandDefinitions($driver, $configuration, $print
445447
446448 private function filterArguments (array $ arguments ): array
447449 {
448- if (method_exists (Nette \DI \Helpers::class, 'filterArguments ' )) {
449- return Nette \DI \Helpers::filterArguments ($ arguments );
450-
451- } elseif (method_exists (Nette \DI \Compiler::class, 'filterArguments ' )) {
452- return Nette \DI \Compiler::filterArguments ($ arguments );
453-
454- } else {
455- throw new Nextras \Migrations \LogicException ();
456- }
450+ return Nette \DI \Helpers::filterArguments ($ arguments );
457451 }
458452}
0 commit comments