Passed
Branch master (e714e6)
by Gabriel
13:58 queued 11:36
created

HelpersFactory   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Test Coverage

Coverage 86.67%

Importance

Changes 0
Metric Value
dl 0
loc 44
ccs 13
cts 15
cp 0.8667
rs 10
c 0
b 0
f 0
wmc 6

3 Methods

Rating   Name   Duplication   Size   Complexity  
A create() 0 10 2
A getHelperClass() 0 9 3
A getHelperClassVariations() 0 4 1
1
<?php
2
3
namespace Nip\View\Helpers;
4
5
use Nip\View\Extensions\Helpers\HelperNotFoundException;
6
7
/**
8
 * Class HelpersFactory
9
 * @package Nip\View\Extensions\Helpers
10
 */
11
class HelpersFactory
12
{
13
14
    /**
15
     * @param $view
16
     * @param $name
17
     * @return mixed
18
     * @throws HelperNotFoundException
19
     */
20 1
    public static function create($view, $name)
21
    {
22 1
        $class = self::getHelperClass($name);
23 1
        if (!class_exists($class)) {
24
            throw new HelperNotFoundException("No helper name [{$name}] found for view engine.");
25
        }
26 1
        $helper = new $class();
27 1
        $helper->setView($view);
28
29 1
        return $helper;
30
    }
31
32
    /**
33
     * @param $name
34
     * @return string
35
     */
36 1
    public static function getHelperClass($name)
37
    {
38 1
        $classNameVariations = self::getHelperClassVariations($name);
39 1
        foreach ($classNameVariations as $nameVariation) {
40 1
            if (class_exists($nameVariation)) {
41 1
                return $nameVariation;
42
            }
43
        }
44
        return '\Nip\Helpers\View\\' . $name;
45
    }
46
47
    /**
48
     * @param string $name
49
     * @return string[]
50
     */
51 1
    public static function getHelperClassVariations($name)
52
    {
53
        return [
54 1
            '\Nip\View\Helpers\\'.$name.'Helper',
55
        ];
56
    }
57
}
58