Passed
Pull Request — master (#101)
by Damien
02:55
created

StorageConfigurationCompilerPass::process()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 18
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 4
eloc 10
c 2
b 0
f 0
nc 4
nop 1
dl 0
loc 18
rs 9.9332
1
<?php
2
3
namespace DH\DoctrineAuditBundle\DependencyInjection\Compiler;
4
5
use DH\DoctrineAuditBundle\Exception\InvalidArgumentException;
6
use Doctrine\ORM\EntityManagerInterface;
7
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
8
use Symfony\Component\DependencyInjection\ContainerBuilder;
9
10
class StorageConfigurationCompilerPass implements CompilerPassInterface
11
{
12
    public function process(ContainerBuilder $container): void
13
    {
14
        if (!$container->hasDefinition('dh_doctrine_audit.configuration')) {
15
            return;
16
        }
17
18
        $config = $container->getParameter('dh_doctrine_audit.configuration');
19
        if (null === $config['storage_entity_manager']) {
20
            return;
21
        }
22
23
        $entityManager = $container->get($config['storage_entity_manager']);
24
        if (!($entityManager instanceof EntityManagerInterface)) {
25
            throw new InvalidArgumentException(sprintf('Service "%s" must implement "%s".', $config['storage_entity_manager'], EntityManagerInterface::class));
26
        }
27
28
        $definition = $container->getDefinition('dh_doctrine_audit.configuration');
29
        $definition->replaceArgument(4, $entityManager);
30
    }
31
}
32