Completed
Pull Request — master (#1163)
by
unknown
02:24
created

SchemaSubscriberPass   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 1
dl 0
loc 24
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A process() 0 18 4
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
 * Removes schema subscribers for older Symfony versions.
14
 */
15
class SchemaSubscriberPass implements CompilerPassInterface
16
{
17
    /**
18
     * {@inheritDoc}
19
     */
20
    public function process(ContainerBuilder $container)
21
    {
22
        // classes only exists in Symfony 5.1 and higher
23
        $subscribers = [
24
            'doctrine.orm.messenger.doctrine_schema_subscriber' => MessengerTransportDoctrineSchemaSubscriber::class,
25
            'doctrine.orm.listeners.pdo_cache_adapter_doctrine_schema_subscriber' => PdoCacheAdapterDoctrineSchemaSubscriber::class,
26
        ];
27
28
        foreach ($subscribers as $id => $class) {
29
            if (!$container->hasDefinition($id)) {
30
                continue;
31
            }
32
33
            if (!class_exists($class)) {
34
                $container->removeDefinition($id);
35
            }
36
        }
37
    }
38
}
39