Completed
Push — master ( 85d523...86ef06 )
by Tom
03:26 queued 02:03
created

MigrationsConfigurationFactory   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 64
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 82.14%

Importance

Changes 0
Metric Value
wmc 7
lcom 0
cbo 3
dl 0
loc 64
ccs 23
cts 28
cp 0.8214
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
B __invoke() 0 39 5
A createService() 0 4 1
A getOptionsClass() 0 3 1
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 Zend\ServiceManager\ServiceLocatorInterface;
10
use Symfony\Component\Console\Output\ConsoleOutput;
11
12
/**
13
 * DBAL Connection ServiceManager factory
14
 *
15
 * @license MIT
16
 * @link    http://www.doctrine-project.org/
17
 * @author  Marco Pivetta <[email protected]>
18
 */
19
class MigrationsConfigurationFactory extends AbstractFactory
20
{
21
    /**
22
     * {@inheritDoc}
23
     *
24
     * @return Configuration
25
     */
26 18
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
27
    {
28 18
        $name             = $this->getName();
29
        /* @var $connection \Doctrine\DBAL\Connection */
30 18
        $connection       = $container->get('doctrine.connection.' . $name);
31 18
        $appConfig        = $container->get('config');
32 18
        $migrationsConfig = $appConfig['doctrine']['migrations_configuration'][$name];
33
34 18
        $configuration = new Configuration($connection);
35
36 18
        $output = new ConsoleOutput();
37 18
        $writerCallback = static function ($message) use ($output) {
38
            $output->writeln($message);
39 18
        };
40
41 18
        $outputWriter = $configuration->getOutputWriter();
42 18
        if (method_exists($outputWriter, 'setCallback')) {
43
            $outputWriter->setCallback($writerCallback);
44
        } else {
45
            // Fallback for doctrine-migrations v1.x
46 18
            $configuration->setOutputWriter(new OutputWriter($writerCallback));
47
        }
48
49 18
        $configuration->setName($migrationsConfig['name']);
50 18
        $configuration->setMigrationsDirectory($migrationsConfig['directory']);
51 18
        $configuration->setMigrationsNamespace($migrationsConfig['namespace']);
52 18
        $configuration->setMigrationsTableName($migrationsConfig['table']);
53 18
        $configuration->registerMigrationsFromDirectory($migrationsConfig['directory']);
54
55 18
        if (method_exists($configuration, 'setMigrationsColumnName')) {
56 18
            $configuration->setMigrationsColumnName($migrationsConfig['column']);
57
        }
58
59 18
        if (isset($migrationsConfig['custom_template']) && method_exists($configuration, 'setCustomTemplate')) {
60
            $configuration->setCustomTemplate($migrationsConfig['custom_template']);
61
        }
62
63 18
        return $configuration;
64
    }
65
66
    /**
67
     * {@inheritDoc}
68
     *
69
     * @return Configuration
70
     */
71 18
    public function createService(ServiceLocatorInterface $container)
72
    {
73 18
        return $this($container, Configuration::class);
74
    }
75
76
    /**
77
     * {@inheritDoc}
78
     */
79
    public function getOptionsClass()
80
    {
81
    }
82
}
83