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

StorageConfigurationCompilerPass   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 20
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 11
c 2
b 0
f 0
dl 0
loc 20
rs 10
wmc 4

1 Method

Rating   Name   Duplication   Size   Complexity  
A process() 0 18 4
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