Passed
Push — master ( b328e0...054509 )
by Enjoys
02:07
created

RenderFactory   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Test Coverage

Coverage 75%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 12
c 2
b 0
f 0
dl 0
loc 35
ccs 6
cts 8
cp 0.75
rs 10
wmc 3

1 Method

Rating   Name   Duplication   Size   Complexity  
A getRender() 0 19 3
1
<?php
2
3
namespace Enjoys\AssetsCollector\Render;
4
5
use Enjoys\AssetsCollector\Assets;
6
use Enjoys\AssetsCollector\Environment;
7
use Enjoys\AssetsCollector\Exception\UnexpectedParameters;
8
use Enjoys\AssetsCollector\Render\Html\Css;
9
use Enjoys\AssetsCollector\Render\Html\Js;
10
11
class RenderFactory
12
{
13
    private const RENDERS = [
14
        Assets::RENDER_HTML => [
15
            'css' => Css::class,
16
            'js' => Js::class
17
        ]
18
    ];
19
20
    /**
21
     * @param string $type
22
     * @param Environment $environment
23
     * @param string $render
24
     * @return RenderInterface
25
     * @throws \Exception
26
     */
27 9
    public static function getRender(
28
        string $type,
29
        Environment $environment,
30
        string $render = Assets::RENDER_HTML
31
    ): RenderInterface {
32
33 9
        if(!array_key_exists($render, self::RENDERS)){
34 1
            throw new UnexpectedParameters(
35 1
                sprintf('Invalid render group. Allowed only: %s', implode(', ', array_keys(self::RENDERS)))
36
            );
37
        }
38
39 8
        if (null === $renderClass = (self::RENDERS[$render][$type] ?? null)) {
40
            throw new UnexpectedParameters(
41
                sprintf('Invalid render. Allowed only: %s', implode(', ', array_keys(self::RENDERS[$render])))
42
            );
43
        }
44
45 8
        return new $renderClass($environment);
46
    }
47
}
48