Passed
Pull Request — master (#294)
by Vincent
02:27
created

HttpCallResultPoolResolver::resolveArguments()   B

Complexity

Conditions 8
Paths 2

Size

Total Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 17
rs 8.4444
c 0
b 0
f 0
cc 8
nc 2
nop 2
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