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

SchemaSubscriberPass::process()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 18
rs 9.6666
c 0
b 0
f 0
cc 4
nc 4
nop 1
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