MethodParameterResolver   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 0
dl 0
loc 39
ccs 12
cts 12
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A resolve() 0 15 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