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

AbstractFactory   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 100%
Metric Value
dl 0
loc 36
wmc 4
lcom 1
cbo 1
ccs 13
cts 13
cp 1
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A createFromConfig() 0 7 1
A getInstance() 0 8 2
A createInstance() 0 9 1
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