Completed
Push — develop ( 6393a8...9e9412 )
by Tom
12s queued 11s
created

MigrationsConfigurationFactory::getOptionsClass()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 3
ccs 0
cts 2
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 2
1
<?php
2
3
namespace DoctrineORMModule\Service;
4
5
use Doctrine\Migrations\Configuration\Configuration;
6
use Doctrine\Migrations\OutputWriter;
7
use DoctrineModule\Service\AbstractFactory;
8
use Interop\Container\ContainerInterface;
9
use Laminas\ServiceManager\ServiceLocatorInterface;
10
use Symfony\Component\Console\Output\ConsoleOutput;
11
12
/**
13
 * DBAL Connection ServiceManager factory
14
 */
15
class MigrationsConfigurationFactory extends AbstractFactory
16
{
17
    /**
18
     * {@inheritDoc}
19
     *
20
     * @return Configuration
21
     */
22 18
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
23
    {
24 18
        $name             = $this->getName();
25
        /* @var $connection \Doctrine\DBAL\Connection */
26 18
        $connection       = $container->get('doctrine.connection.' . $name);
27 18
        $appConfig        = $container->get('config');
28 18
        $migrationsConfig = $appConfig['doctrine']['migrations_configuration'][$name];
29
30 18
        $configuration = new Configuration($connection);
31
32 18
        $output = new ConsoleOutput();
33
        $writerCallback = static function ($message) use ($output) {
34
            $output->writeln($message);
35 18
        };
36
37 18
        $outputWriter = $configuration->getOutputWriter();
38 18
        if (method_exists($outputWriter, 'setCallback')) {
39 18
            $outputWriter->setCallback($writerCallback);
40
        } else {
41
            // Fallback for doctrine-migrations v1.x
42
            $configuration->setOutputWriter(new OutputWriter($writerCallback));
43
        }
44
45 18
        $configuration->setName($migrationsConfig['name']);
46 18
        $configuration->setMigrationsDirectory($migrationsConfig['directory']);
47 18
        $configuration->setMigrationsNamespace($migrationsConfig['namespace']);
48 18
        $configuration->setMigrationsTableName($migrationsConfig['table']);
49 18
        $configuration->registerMigrationsFromDirectory($migrationsConfig['directory']);
50
51 18
        if (method_exists($configuration, 'setMigrationsColumnName')) {
52 18
            $configuration->setMigrationsColumnName($migrationsConfig['column']);
53
        }
54
55 18
        if (isset($migrationsConfig['custom_template']) && method_exists($configuration, 'setCustomTemplate')) {
56
            $configuration->setCustomTemplate($migrationsConfig['custom_template']);
57
        }
58
59 18
        return $configuration;
60
    }
61
62
    /**
63
     * {@inheritDoc}
64
     *
65
     * @return Configuration
66
     */
67 18
    public function createService(ServiceLocatorInterface $container)
68
    {
69 18
        return $this($container, Configuration::class);
70
    }
71
72
    /**
73
     * {@inheritDoc}
74
     */
75
    public function getOptionsClass()
76
    {
77
    }
78
}
79