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

Factory::__call()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 13
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 3.0261

Importance

Changes 0
Metric Value
dl 0
loc 13
ccs 6
cts 7
cp 0.8571
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 7
nc 3
nop 2
crap 3.0261
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