Completed
Push — master ( 6135b8...864be1 )
by Stéphane
61:19
created

AdmingeneratorGeneratorBundle::build()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 5
nc 1
nop 1
1
<?php
2
3
namespace Admingenerator\GeneratorBundle;
4
5
use Symfony\Component\HttpKernel\Bundle\Bundle;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
use Symfony\Component\DependencyInjection\ContainerInterface;
8
use Admingenerator\GeneratorBundle\ClassLoader\AdmingeneratedClassLoader;
9
use Admingenerator\GeneratorBundle\DependencyInjection\Compiler\TwigLoaderPass;
10
use Admingenerator\GeneratorBundle\DependencyInjection\Compiler\ValidatorPass;
11
use Admingenerator\GeneratorBundle\DependencyInjection\Compiler\FormPass;
12
use Symfony\Component\HttpKernel\KernelInterface;
13
14
class AdmingeneratorGeneratorBundle extends Bundle
15
{
16
    /**
17
     * @var boolean
18
     */
19
    private $classLoaderInitialized = false;
20
21
    /**
22
     * @var KernelInterface
23
     */
24
    private $kernel;
25
26
    /**
27
     * @param KernelInterface $kernel
28
     */
29
    public function __construct(KernelInterface $kernel)
30
    {
31
        $this->kernel = $kernel;
32
        $this->initAdmingeneratorClassLoader($kernel->getCacheDir());
33
    }
34
35
    /**
36
     * (non-PHPdoc)
37
     * @see \Symfony\Component\HttpKernel\Bundle\Bundle::build()
38
     */
39
    public function build(ContainerBuilder $container)
40
    {
41
        parent::build($container);
42
43
        $container->addCompilerPass(new ValidatorPass());
44
        $container->addCompilerPass(new FormPass());
45
        $container->addCompilerPass(new TwigLoaderPass());
46
    }
47
48
    /**
49
     * @return \Admingenerator\GeneratorBundle\DependencyInjection\AdmingeneratorGeneratorExtension
50
     */
51
    public function getContainerExtension()
52
    {
53
        $this->extension = new DependencyInjection\AdmingeneratorGeneratorExtension($this->kernel);
54
55
        return $this->extension;
56
    }
57
58
    /**
59
     * Initialize Admingenerator Class loader
60
     *
61
     * @param string $cacheDir
62
     */
63
    private function initAdmingeneratorClassLoader($cacheDir)
64
    {
65
        if ($this->classLoaderInitialized) {
66
            return;
67
        }
68
69
        $this->classLoaderInitialized = true;
70
71
        $admingeneratedClassLoader = new AdmingeneratedClassLoader();
72
        $admingeneratedClassLoader->setBasePath($cacheDir);
73
        $admingeneratedClassLoader->register();
74
    }
75
}
76