KernelPass   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 8
c 1
b 0
f 0
lcom 0
cbo 2
dl 0
loc 37
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A loadFileFromParameter() 0 10 3
A getKernelClass() 0 6 2
A process() 0 16 3
1
<?php
2
3
namespace Knp\FriendlyContexts\DependencyInjection\Compiler;
4
5
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
use Symfony\Component\DependencyInjection\Definition;
8
9
class KernelPass implements CompilerPassInterface
10
{
11
    public function process(ContainerBuilder $container)
12
    {
13
        $this->loadFileFromParameter($container, 'friendly.symfony_kernel.bootstrap');
14
        $this->loadFileFromParameter($container, 'friendly.symfony_kernel.path');
15
16
        if ($container->has('symfony2_extension.kernel')) {
17
            $container->setAlias('friendly.symfony.kernel', 'symfony2_extension.kernel');
18
        } elseif (null !== $class = $this->getKernelClass($container)) {
19
            $definition = new Definition($class);
20
            $definition
21
                ->addArgument($container->getParameter('friendly.symfony_kernel.env'))
22
                ->addArgument($container->getParameter('friendly.symfony_kernel.debug'))
23
            ;
24
            $container->setDefinition('friendly.symfony.kernel', $definition);
25
        }
26
    }
27
28
    protected function loadFileFromParameter(ContainerBuilder $container, $parameter)
29
    {
30
        $base  = $container->getParameter('paths.base');
31
        $param = $container->getParameter($parameter);
32
        if (file_exists($file = $base.DIRECTORY_SEPARATOR.$param)) {
33
            require_once($file);
34
        } elseif (file_exists($param)) {
35
            require_once($param);
36
        }
37
    }
38
39
    protected function getKernelClass(ContainerBuilder $container)
40
    {
41
        $class = $container->getParameter('friendly.symfony_kernel.class');
42
43
        return class_exists($class) ? $class : null;
44
    }
45
}
46