Passed
Push — master ( e17376...74a3c9 )
by Asmir
01:07 queued 17s
created

ConfigureDependencyFactoryPass::process()   A

Complexity

Conditions 4
Paths 2

Size

Total Lines 21
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 15
CRAP Score 4

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 15
dl 0
loc 21
ccs 15
cts 15
cp 1
rs 9.7666
c 1
b 0
f 0
cc 4
nc 2
nop 1
crap 4
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\Bundle\MigrationsBundle\DependencyInjection\CompilerPass;
6
7
use Doctrine\Migrations\DependencyFactory;
8
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
9
use Symfony\Component\DependencyInjection\ContainerBuilder;
10
use Symfony\Component\DependencyInjection\Reference;
11
use function sprintf;
12
13
class ConfigureDependencyFactoryPass implements CompilerPassInterface
14
{
15 18
    public function process(ContainerBuilder $container) : void
16
    {
17 18
        $preferredEm  = $container->getParameter('doctrine.migrations.preferred_em');
18 18
        $diDefinition = $container->getDefinition('doctrine.migrations.dependency_factory');
19
20 18
        $emID = sprintf('doctrine.orm.%s_entity_manager', $preferredEm ?: 'default');
21
22 18
        if ($container->has($emID)) {
23 14
            $container->getDefinition('doctrine.migrations.em_loader')
24 14
                ->setArgument(0, new Reference($emID));
25
26 14
            $diDefinition->setFactory([DependencyFactory::class, 'fromEntityManager']);
27 14
            $diDefinition->setArgument(1, new Reference('doctrine.migrations.em_loader'));
28
        } else {
29 4
            $preferredConnection = $container->getParameter('doctrine.migrations.preferred_connection');
30 4
            $connectionId        = sprintf('doctrine.dbal.%s_connection', $preferredConnection ?: 'default');
31 4
            $container->getDefinition('doctrine.migrations.connection_loader')
32 4
                ->setArgument(0, new Reference($connectionId));
33
34 4
            $diDefinition->setFactory([DependencyFactory::class, 'fromConnection']);
35 4
            $diDefinition->setArgument(1, new Reference('doctrine.migrations.connection_loader'));
36
        }
37 18
    }
38
}
39