1 | <?php |
||
18 | class MigrationsConfigurationFactory extends AbstractFactory |
||
19 | { |
||
20 | /** |
||
21 | * {@inheritDoc} |
||
22 | * |
||
23 | * @return Configuration |
||
24 | */ |
||
25 | 18 | public function __invoke(ContainerInterface $container, $requestedName, ?array $options = null) |
|
26 | { |
||
27 | 18 | $name = $this->getName(); |
|
28 | 18 | $connection = $container->get('doctrine.connection.' . $name); |
|
29 | 18 | $appConfig = $container->get('config'); |
|
30 | 18 | $migrationsConfig = $appConfig['doctrine']['migrations_configuration'][$name]; |
|
31 | |||
32 | 18 | $configuration = new Configuration($connection); |
|
33 | |||
34 | 18 | $output = new ConsoleOutput(); |
|
35 | $writerCallback = static function ($message) use ($output) : void { |
||
36 | $output->writeln($message); |
||
37 | 18 | }; |
|
38 | |||
39 | 18 | $outputWriter = $configuration->getOutputWriter(); |
|
40 | 18 | if (method_exists($outputWriter, 'setCallback')) { |
|
41 | 18 | $outputWriter->setCallback($writerCallback); |
|
42 | } else { |
||
43 | // Fallback for doctrine-migrations v1.x |
||
44 | $configuration->setOutputWriter(new OutputWriter($writerCallback)); |
||
45 | } |
||
46 | |||
47 | 18 | $configuration->setName($migrationsConfig['name']); |
|
48 | 18 | $configuration->setMigrationsDirectory($migrationsConfig['directory']); |
|
49 | 18 | $configuration->setMigrationsNamespace($migrationsConfig['namespace']); |
|
50 | 18 | $configuration->setMigrationsTableName($migrationsConfig['table']); |
|
51 | 18 | $configuration->registerMigrationsFromDirectory($migrationsConfig['directory']); |
|
52 | |||
53 | 18 | if (method_exists($configuration, 'setMigrationsColumnName')) { |
|
54 | 18 | $configuration->setMigrationsColumnName($migrationsConfig['column']); |
|
55 | } |
||
56 | |||
57 | 18 | if (isset($migrationsConfig['custom_template']) && method_exists($configuration, 'setCustomTemplate')) { |
|
58 | $configuration->setCustomTemplate($migrationsConfig['custom_template']); |
||
59 | } |
||
60 | |||
61 | 18 | return $configuration; |
|
62 | } |
||
63 | |||
64 | /** |
||
65 | * {@inheritDoc} |
||
66 | * |
||
67 | * @return Configuration |
||
68 | */ |
||
69 | 18 | public function createService(ServiceLocatorInterface $container) |
|
70 | { |
||
71 | 18 | return $this($container, Configuration::class); |
|
72 | } |
||
73 | |||
74 | public function getOptionsClass() : string |
||
77 | } |
||
78 |