SingletonServices   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Importance

Changes 3
Bugs 1 Features 0
Metric Value
eloc 25
c 3
b 1
f 0
dl 0
loc 48
rs 10
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A declareAsSingleton() 0 4 2
A registerSingletons() 0 16 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\ContextAsNormalizer;
10
use Imanghafoori\Widgets\Utils\Normalizers\ControllerNormalizer;
11
use Imanghafoori\Widgets\Utils\Normalizers\PresenterNormalizer;
12
use Imanghafoori\Widgets\Utils\Normalizers\TemplateNormalizer;
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
    private $normalizers = [
31
        CacheNormalizer::class,
32
        TemplateNormalizer::class,
33
        PresenterNormalizer::class,
34
        ControllerNormalizer::class,
35
        ContextAsNormalizer::class,
36
        CacheTagsNormalizer::class,
37
    ];
38
39
    protected function declareAsSingleton(Container $app)
40
    {
41
        foreach ($this->singletonClasses as $class) {
42
            $app->singleton($class);
43
        }
44
    }
45
46
    public function registerSingletons(Container $app)
47
    {
48
        $app->singleton('command.imanghafoori.widget', function (Container $app) {
49
            return $app['Imanghafoori\Widgets\WidgetGenerator'];
50
        });
51
52
        $app->singleton(Normalizer::class, function () {
53
            $mainNormalizer = new Utils\Normalizer();
54
            foreach ($this->normalizers as $normalizer) {
55
                $mainNormalizer->addNormalizer(new $normalizer);
56
            }
57
58
            return $mainNormalizer;
59
        });
60
61
        $this->declareAsSingleton($app);
62
    }
63
}
64