Passed
Push — main ( 31ed5f...388aa0 )
by Thierry
12:07
created

CompilerPass::process()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 18
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 8
nc 3
nop 1
dl 0
loc 18
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Lagdo\Symfony\Facades\DependencyInjection\Compiler;
4
5
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
8
use function array_keys;
9
10
class CompilerPass implements CompilerPassInterface
11
{
12
    /**
13
     * @inheritDoc
14
     */
15
    public function process(ContainerBuilder $container)
16
    {
17
        if(!$container->hasDefinition('lagdo.facades.service_locator'))
18
        {
19
            return;
20
        }
21
22
        $serviceLocatorDefinition = $container->getDefinition('lagdo.facades.service_locator');
23
24
        // Append the tagged services to the service locator first argument.
25
        $locatedServices = $serviceLocatorDefinition->getArguments()[0] ?? [];
26
        $services = $container->findTaggedServiceIds('lagdo.facades.service');
27
        foreach(array_keys($services) as $service)
28
        {
29
            $locatedServices[$service] = $container->getDefinition($service);
30
        }
31
32
        $serviceLocatorDefinition->replaceArgument(0, $locatedServices);
33
    }
34
}
35