Completed
Push — master ( 98e038...4b7885 )
by Andreas
21s queued 11s
created

CacheSchemaSubscriberPass   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 0
Metric Value
wmc 6
lcom 0
cbo 3
dl 0
loc 30
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B process() 0 24 6
1
<?php
2
3
namespace Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler;
4
5
use Symfony\Component\Cache\Adapter\PdoAdapter;
6
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
7
use Symfony\Component\DependencyInjection\ContainerBuilder;
8
use Symfony\Component\DependencyInjection\Reference;
9
10
/**
11
 * Injects PdoAdapter into its schema subscriber.
12
 *
13
 * Must be run later after ResolveChildDefinitionsPass.
14
 */
15
class CacheSchemaSubscriberPass implements CompilerPassInterface
16
{
17
    /**
18
     * {@inheritDoc}
19
     */
20
    public function process(ContainerBuilder $container)
21
    {
22
        $subscriberId = 'doctrine.orm.listeners.pdo_cache_adapter_doctrine_schema_subscriber';
23
24
        if (! $container->hasDefinition($subscriberId)) {
25
            return;
26
        }
27
28
        $cacheAdaptersReferences = [];
29
        foreach ($container->getDefinitions() as $id => $definition) {
30
            if ($definition->isAbstract() || $definition->isSynthetic()) {
31
                continue;
32
            }
33
34
            if ($definition->getClass() !== PdoAdapter::class) {
35
                continue;
36
            }
37
38
            $cacheAdaptersReferences[] = new Reference($id);
39
        }
40
41
        $container->getDefinition($subscriberId)
42
            ->replaceArgument(0, $cacheAdaptersReferences);
43
    }
44
}
45