DefaultActivator::createInstance()   A
last analyzed

Complexity

Conditions 4
Paths 5

Size

Total Lines 21
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 21
c 0
b 0
f 0
rs 9.0534
cc 4
eloc 12
nc 5
nop 3
1
<?php
2
namespace DICIT\Activators;
3
4
use DICIT\Activator;
5
use DICIT\Container;
6
use DICIT\UnbuildableServiceException;
7
use DICIT\Util\ParamsResolver;
8
9
class DefaultActivator implements Activator
10
{
11
12
    public function createInstance(Container $container, $serviceName, array $serviceConfig)
13
    {
14
        $className = $serviceConfig['class'];
15
16
        if (! class_exists($className)) {
17
            throw new UnbuildableServiceException(sprintf("Class '%s' not found.", $className));
18
        }
19
20
        $class = new \ReflectionClass($className);
21
        $activationArgs = isset($serviceConfig['arguments']) ?
22
            ParamsResolver::resolveParams($container, $serviceConfig['arguments']) : array();
23
24
        if (! empty($activationArgs)) {
25
            $instance = $class->newInstanceArgs($activationArgs);
26
        }
27
        else {
28
            $instance = $class->newInstance();
29
        }
30
31
        return $instance;
32
    }
33
}
34