Completed
Branch develop (4c3d66)
by Mariano
11:18
created

AbstractFactory::getInstance()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2
Metric Value
dl 0
loc 8
ccs 4
cts 4
cp 1
rs 9.4285
cc 2
eloc 4
nc 2
nop 2
crap 2
1
<?php
2
namespace Mcustiel\PowerRoute\Common\Factories;
3
4
abstract class AbstractFactory extends Mapping
5
{
6
    /**
7
     *
8
     * @param array $config
9
     *
10
     * @return \Mcustiel\PowerRoute\InputSources\InputSourceInterface
11
     * @throws \Exception
12
     */
13 4
    public function createFromConfig(array $config)
14
    {
15 4
        $class = key($config);
16 4
        $this->checkMappingIsValid($class);
17
18 4
        return $this->getInstance($class, $config);
19
    }
20
21 4
    private function getInstance($class, $config)
22
    {
23 4
        if (is_object($this->mapping[$class])) {
24 1
            return $this->mapping[$class];
25
        }
26
27 3
        return $this->createInstance($this->getClassName($class), $config, $class);
28
    }
29
30 3
    private function createInstance($className, $config, $class)
31
    {
32 3
        $arguments = $this->getConstructorArguments($class);
33
34 3
        $object = new $className(...$arguments);
35 3
        $object->setArgument($config[$class]);
36
37 3
        return $object;
38
    }
39
}
40