Completed
Pull Request — master (#32)
by Timothée
02:28
created

DoctrineMiddlewarePass::process()   B

Complexity

Conditions 5
Paths 4

Size

Total Lines 21
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 5.2

Importance

Changes 0
Metric Value
dl 0
loc 21
ccs 12
cts 15
cp 0.8
rs 8.7624
c 0
b 0
f 0
cc 5
eloc 12
nc 4
nop 1
crap 5.2
1
<?php
2
namespace League\Tactician\Bundle\DependencyInjection\Compiler;
3
4
use League\Tactician\Doctrine\ORM\TransactionMiddleware;
5
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
use Symfony\Component\DependencyInjection\Definition;
8
use Symfony\Component\DependencyInjection\Reference;
9
10
/**
11
 * This compiler pass registers doctrine entity manager middleware
12
 */
13
class DoctrineMiddlewarePass implements CompilerPassInterface
14
{
15
    /**
16
     * {@inheritdoc}
17
     */
18 4
    public function process(ContainerBuilder $container)
19
    {
20 4
        if (!class_exists(TransactionMiddleware::class) || !$container->hasParameter('doctrine.entity_managers')) {
21 3
            return;
22
        }
23
24 1
        $entityManagers = $container->getParameter('doctrine.entity_managers');
25 1
        if (empty($entityManagers)) {
26
            return;
27
        }
28
29 1
        foreach ($entityManagers as $name => $serviceId) {
30 1
            $container->setDefinition(
31 1
                sprintf('tactician.middleware.doctrine.%s', $name),
32 1
                new Definition(TransactionMiddleware::class, [ new Reference($serviceId) ])
33
            );
34
        }
35
36 1
        $defaultEntityManager = $container->getParameter('doctrine.default_entity_manager');
37 1
        $container->setAlias('tactician.middleware.doctrine', sprintf('tactician.middleware.doctrine.%s', $defaultEntityManager));
38 1
    }
39
}
40
41