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