Passed
Pull Request — master (#174)
by Christoffer
02:51
created

ResolverRegistry::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
eloc 1
nc 1
nop 1
1
<?php
2
3
namespace Digia\GraphQL\Schema\Resolver;
4
5
class ResolverRegistry implements ResolverRegistryInterface
6
{
7
    /**
8
     * @var array
9
     */
10
    protected $resolverMap;
11
12
    /**
13
     * ResolverMapRegistry constructor.
14
     *
15
     * @param array $resolverMap
16
     */
17
    public function __construct(array $resolverMap = [])
18
    {
19
        $this->resolverMap = $resolverMap;
20
    }
21
22
    /**
23
     * @inheritdoc
24
     */
25
    public function register(string $typeName, $resolver): void
26
    {
27
        $this->resolverMap[$typeName] = $resolver;
28
    }
29
30
    /**
31
     * @inheritdoc
32
     */
33
    public function lookup(string $typeName, string $fieldName): ?callable
34
    {
35
        $resolver = $this->resolverMap[$typeName] ?? null;
36
37
        if (\is_array($resolver) && isset($resolver[$fieldName])) {
38
            return $resolver[$fieldName];
39
        }
40
41
        if (\is_string($resolver)) {
42
            $resolver = new $resolver();
43
        }
44
45
        if ($resolver instanceof ResolverInterface) {
46
            return $resolver->getResolveMethod($fieldName);
47
        }
48
49
        return null;
50
    }
51
}
52