Completed
Pull Request — master (#1163)
by
unknown
01:47
created

CacheSchemaSubscriberPass   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

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

1 Method

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