MethodParameterResolver::resolve()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 4

Importance

Changes 0
Metric Value
dl 0
loc 15
ccs 9
cts 9
cp 1
rs 9.2
c 0
b 0
f 0
cc 4
eloc 9
nc 4
nop 2
crap 4
1
<?php
2
3
namespace Mosaic\Routing;
4
5
use Mosaic\Container\Container;
6
use ReflectionFunctionAbstract;
7
8
class MethodParameterResolver
9
{
10
    /**
11
     * @var Container
12
     */
13
    private $container;
14
15
    /**
16
     * MethodParameterResolver constructor.
17
     *
18
     * @param Container $container
19
     */
20 4
    public function __construct(Container $container)
21
    {
22 4
        $this->container = $container;
23 4
    }
24
25
    /**
26
     * @param ReflectionFunctionAbstract $reflector
27
     * @param array                      $parameters
28
     *
29
     * @return mixed
30
     */
31 4
    public function resolve(ReflectionFunctionAbstract $reflector, array $parameters = []) : array
32
    {
33 4
        $reflected = $reflector->getParameters();
34
35 4
        $resolved = [];
36 4
        foreach ($reflected as $param) {
37 4
            if ($class = $param->getClass()) {
38 4
                $resolved[$param->name] = $this->container->make($class->name);
39 2
            } elseif (isset($parameters[$param->name])) {
40 4
                $resolved[$param->name] = $parameters[$param->name];
41
            }
42
        }
43
44 4
        return $resolved;
45
    }
46
}
47