Resolver::resolve()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 23
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 3

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 23
ccs 12
cts 12
cp 1
rs 9.0856
c 1
b 0
f 0
cc 3
eloc 13
nc 3
nop 1
crap 3
1
<?php
2
3
namespace Sensorario\Container\Resolver;
4
5
use Sensorario\Container\Objects\Argument;
6
use Sensorario\Container\Objects\Service;
7
8
class Resolver implements
9
    \Sensorario\Container\Resolver\ResolverInterface
10
{
11
    private $construcrtorResolver;
12
13 10
    public function setConstructorResolver(ConstructorResolver $resolver) : void
14
    {
15 10
        $this->construcrtorResolver = $resolver;
16 10
    }
17
18 2
    public function resolve(Service $service)
19
    {
20 2
        $resolution = $this->construcrtorResolver->resolve($service);
21
22 2
        foreach ($service->getMethods() as $methodName => $value) {
23 2
            $argument = Argument::fromString($value);
24
25 2
            if ($argument->isService()) {
26 2
                $collabortor = Service::box([
27 2
                    'name' => $argument->getServiceName(),
28 2
                    'services' => $service->getServicesConfiguration(),
29
                ]);
30
31 2
                $resolution->$methodName(
32 2
                    $this->construcrtorResolver->resolve($collabortor)
33
                );
34
            } else {
35 2
                $resolution->$methodName($value);
36
            }
37
        }
38
39 2
        return $resolution;
40
    }
41
}
42