Passed
Pull Request — master (#294)
by Vincent
03:16 queued 10s
created

HttpCallResultPoolResolver   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

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

2 Methods

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