Passed
Pull Request — master (#1)
by Peter
07:07
created

EngineBootstrapper   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 10
dl 0
loc 34
rs 10
c 1
b 0
f 0
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getBindings() 0 4 1
A registerBindings() 0 17 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AbterPhp\Framework\Bootstrappers\Template;
6
7
use AbterPhp\Framework\Constant\Env;
8
use AbterPhp\Framework\Constant\Event;
9
use AbterPhp\Framework\Events\TemplateEngineReady;
10
use AbterPhp\Framework\Template\CacheManager;
11
use AbterPhp\Framework\Template\Engine;
12
use AbterPhp\Framework\Template\Renderer;
13
use Opulence\Environments\Environment;
14
use Opulence\Events\Dispatchers\IEventDispatcher;
15
use Opulence\Ioc\Bootstrappers\Bootstrapper;
16
use Opulence\Ioc\Bootstrappers\ILazyBootstrapper;
17
use Opulence\Ioc\IContainer;
18
19
class EngineBootstrapper extends Bootstrapper implements ILazyBootstrapper
20
{
21
    /**
22
     * @return array
23
     */
24
    public function getBindings(): array
25
    {
26
        return [
27
            Engine::class,
28
        ];
29
    }
30
31
    /**
32
     * @param IContainer $container
33
     *
34
     * @throws \Opulence\Ioc\IocException
35
     */
36
    public function registerBindings(IContainer $container)
37
    {
38
        /** @var IEventDispatcher $eventDispatcher */
39
        $eventDispatcher = $container->resolve(IEventDispatcher::class);
40
41
        /** @var CacheManager $cacheManager */
42
        $cacheManager = $container->resolve(CacheManager::class);
43
44
        /** @var Renderer $renderer */
45
        $renderer = $container->resolve(Renderer::class);
46
47
        $isCacheAllowed = (Environment::getVar(Env::ENV_NAME) !== Environment::DEVELOPMENT);
48
49
        $templateEngine = new Engine($renderer, $cacheManager, $isCacheAllowed);
50
        $eventDispatcher->dispatch(Event::TEMPLATE_ENGINE_READY, new TemplateEngineReady($templateEngine));
51
52
        $container->bindInstance(Engine::class, $templateEngine);
53
    }
54
}
55