Completed
Pull Request — master (#99)
by De Cramer
02:46
created

Factory   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 81.82%

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 1
dl 0
loc 39
ccs 9
cts 11
cp 0.8182
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A __call() 0 13 3
1
<?php
2
3
namespace eXpansion\Framework\Gui\Ui;
4
5
use eXpansion\Framework\Core\Exceptions\UnknownMethodException;
6
7
/**
8
 * Class Factory
9
 *
10
 * @author    de Cramer Oliver<[email protected]>
11
 * @copyright 2017 Smile
12
 * @package eXpansion\Framework\Gui\Ui
13
 */
14
class Factory
15
{
16
    /**
17
     * @var string[]
18
     */
19
    protected $classes;
20
21
    /**
22
     * Factory constructor.
23
     *
24
     * @param $classes
25
     */
26 1
    public function __construct($classes)
27
    {
28 1
        $this->classes = $classes;
29 1
    }
30
31
    /**
32
     * @param $name
33
     * @param $arguments
34
     *
35
     * @return mixed
36
     *
37
     * @throws UnknownMethodException
38
     */
39 1
    public function __call($name, $arguments)
40
    {
41 1
        if (strpos($name, 'create') === 0) {
42 1
            $name = str_replace('create', '', $name);
43
44 1
            if (isset($this->classes[$name])) {
45 1
                $class = $this->classes[$name];
46 1
                return new $class(...$arguments);
47
            }
48
        }
49
50
        throw new UnknownMethodException("$name is an unknown method");
51
    }
52
}
53