Passed
Pull Request — master (#297)
by
unknown
03:17
created

HttpCallResultPoolResolver   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
wmc 9
lcom 1
cbo 0
dl 0
loc 35
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 8 2
B resolveArguments() 0 21 7
1
<?php
2
3
namespace Behatch\HttpCall;
4
5
use Behat\Behat\Context\Argument\ArgumentResolver;
6
7
class HttpCallResultPoolResolver implements ArgumentResolver
8
{
9
    private $dependencies;
10
11
    public function __construct(/* ... */)
12
    {
13
        $this->dependencies = [];
14
15
        foreach (func_get_args() as $param) {
16
            $this->dependencies[get_class($param)] = $param;
17
        }
18
    }
19
20
    public function resolveArguments(\ReflectionClass $classReflection, array $arguments)
21
    {
22
        $constructor = $classReflection->getConstructor();
23
        if ($constructor !== null) {
24
            $parameters = $constructor->getParameters();
25
            foreach ($parameters as $parameter) {
26
                if (
27
                    method_exists($parameter, 'getType')
28
                    && isset($this->dependencies[(string) $parameter->getType()])
29
                ) {
30
                    $arguments[$parameter->name] = $this->dependencies[(string) $parameter->getType()];
31
                } elseif (
32
                    null !== $parameter->getClass()
33
                    && isset($this->dependencies[$parameter->getClass()->name])
34
                ) {
35
                    $arguments[$parameter->name] = $this->dependencies[$parameter->getClass()->name];
36
                }
37
            }
38
        }
39
        return $arguments;
40
    }
41
}
42