Completed
Push — master ( f8a04a...bca97c )
by Daniel
03:18
created

ConfigCachePass::process()   A

Complexity

Conditions 4
Paths 6

Size

Total Lines 19
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 19
rs 9.2
cc 4
eloc 10
nc 6
nop 1
1
<?php
2
3
4
namespace Cmobi\RabbitmqBundle\DependencyInjection\Compiler;
5
6
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
7
use Symfony\Component\DependencyInjection\ContainerBuilder;
8
use Symfony\Component\DependencyInjection\Reference;
9
10
class ConfigCachePass implements CompilerPassInterface
11
{
12
    public function process(ContainerBuilder $container)
13
    {
14
        $resourceCheckers = array();
15
16
        foreach ($container->findTaggedServiceIds('cmobi_rabbitmq.config_cache.resource_checker') as $id => $tags) {
17
            $priority = isset($tags[0]['priority']) ? $tags[0]['priority'] : 0;
18
            $resourceCheckers[$priority][] = new Reference($id);
19
        }
20
21
        if (empty($resourceCheckers)) {
22
            return;
23
        }
24
25
        // sort by priority and flatten
26
        krsort($resourceCheckers);
27
        $resourceCheckers = call_user_func_array('array_merge', $resourceCheckers);
28
29
        $container->getDefinition('cmobi_rabbitmq.config_cache_factory')->replaceArgument(0, $resourceCheckers);
30
    }
31
}
32