Completed
Push — master ( 94d3aa...1e9c69 )
by Iman
05:12
created

SingletonServices   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 28
dl 0
loc 51
rs 10
c 0
b 0
f 0
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A registerSingletons() 0 25 1
A declareAsSingleton() 0 5 2
1
<?php
2
3
namespace Imanghafoori\Widgets;
4
5
use Illuminate\Container\Container;
6
use Imanghafoori\Widgets\Utils\Normalizer;
7
use Imanghafoori\Widgets\Utils\Normalizers\CacheNormalizer;
8
use Imanghafoori\Widgets\Utils\Normalizers\CacheTagsNormalizer;
9
use Imanghafoori\Widgets\Utils\Normalizers\TemplateNormalizer;
10
use Imanghafoori\Widgets\Utils\Normalizers\ContextAsNormalizer;
11
use Imanghafoori\Widgets\Utils\Normalizers\PresenterNormalizer;
12
use Imanghafoori\Widgets\Utils\Normalizers\ControllerNormalizer;
13
14
class SingletonServices
15
{
16
    /**
17
     * Register classes as singletons.
18
     *
19
     * @param $app
20
     */
21
    private $singletonClasses  = [
22
        Utils\HtmlMinifier::class,
23
        Utils\DebugInfo::class,
24
        Utils\Policies::class,
25
        Utils\Cache::class,
26
        Utils\CacheTag::class,
27
        Utils\WidgetRenderer::class,
28
    ];
29
30
    protected function declareAsSingleton(Container $app)
31
    {
32
        foreach ($this->singletonClasses as $class) {
33
            $app->singleton($class, function () use ($class) {
34
                return new $class;
35
            });
36
        }
37
    }
38
39
40
    public function registerSingletons(Container $app)
41
    {
42
        $app->singleton('command.imanghafoori.widget', function (Container $app) {
43
            return $app['Imanghafoori\Widgets\WidgetGenerator'];
44
        });
45
46
        $app->singleton(Normalizer::class, function () {
47
            $cacheNormalizer = new CacheNormalizer();
48
            $tplNormalizer = new TemplateNormalizer();
49
            $presenterNormalizer = new PresenterNormalizer();
50
            $ctrlNormalizer = new ControllerNormalizer();
51
            $contextAsNormalizer = new ContextAsNormalizer();
52
            $cacheTagsNormalizer = new CacheTagsNormalizer();
53
54
            return new Utils\Normalizer(
55
                $tplNormalizer,
56
                $cacheNormalizer,
57
                $presenterNormalizer,
58
                $ctrlNormalizer,
59
                $cacheTagsNormalizer,
60
                $contextAsNormalizer
61
            );
62
        });
63
64
        $this->declareAsSingleton($app);
65
    }
66
}
67