@@ -29,25 +29,9 @@ class ConfigResolver implements ResolverInterface
29
29
/** @var boolean */
30
30
private $ enabledDebug ;
31
31
32
- // [name => method]
33
- private $ resolverMap = [
34
- 'fields ' => 'resolveFields ' ,
35
- 'isTypeOf ' => 'resolveResolveCallback ' ,
36
- 'interfaces ' => 'resolveInterfaces ' ,
37
- 'types ' => 'resolveTypes ' ,
38
- 'values ' => 'resolveValues ' ,
39
- 'resolveType ' => 'resolveResolveCallback ' ,
40
- 'resolveCursor ' => 'resolveResolveCallback ' ,
41
- 'resolveNode ' => 'resolveResolveCallback ' ,
42
- 'nodeType ' => 'resolveTypeCallback ' ,
43
- 'connectionFields ' => 'resolveFields ' ,
44
- 'edgeFields ' => 'resolveFields ' ,
45
- 'outputFields ' => 'resolveFields ' ,
46
- 'inputFields ' => 'resolveFields ' ,
47
- 'mutateAndGetPayload ' => 'resolveResolveCallback ' ,
48
- 'idFetcher ' => 'resolveResolveCallback ' ,
49
- 'nodeInterfaceType ' => 'resolveTypeCallback ' ,
50
- ];
32
+ /** @var array */
33
+ // [name => callable]
34
+ private $ resolverMap = [];
51
35
52
36
public function __construct (
53
37
ResolverInterface $ typeResolver ,
@@ -60,6 +44,32 @@ public function __construct(
60
44
$ this ->fieldResolver = $ fieldResolver ;
61
45
$ this ->expressionLanguage = $ expressionLanguage ;
62
46
$ this ->enabledDebug = $ enabledDebug ;
47
+ $ this ->resolverMap = [
48
+ 'fields ' => [$ this , 'resolveFields ' ],
49
+ 'isTypeOf ' => [$ this , 'resolveResolveCallback ' ],
50
+ 'interfaces ' => [$ this , 'resolveInterfaces ' ],
51
+ 'types ' => [$ this , 'resolveTypes ' ],
52
+ 'values ' => [$ this , 'resolveValues ' ],
53
+ 'resolveType ' => [$ this , 'resolveResolveCallback ' ],
54
+ 'resolveCursor ' => [$ this , 'resolveResolveCallback ' ],
55
+ 'resolveNode ' => [$ this , 'resolveResolveCallback ' ],
56
+ 'nodeType ' => [$ this , 'resolveTypeCallback ' ],
57
+ 'connectionFields ' => [$ this , 'resolveFields ' ],
58
+ 'edgeFields ' => [$ this , 'resolveFields ' ],
59
+ 'outputFields ' => [$ this , 'resolveFields ' ],
60
+ 'inputFields ' => [$ this , 'resolveFields ' ],
61
+ 'mutateAndGetPayload ' => [$ this , 'resolveResolveCallback ' ],
62
+ 'idFetcher ' => [$ this , 'resolveResolveCallback ' ],
63
+ 'nodeInterfaceType ' => [$ this , 'resolveTypeCallback ' ],
64
+ 'inputType ' => [$ this , 'resolveTypeCallback ' ],
65
+ 'outputType ' => [$ this , 'resolveTypeCallback ' ],
66
+ 'resolveSingleInput ' => [$ this , 'resolveResolveCallback ' ],
67
+ ];
68
+ }
69
+
70
+ public function addResolverMap ($ name , callable $ resolver )
71
+ {
72
+ $ this ->resolverMap [$ name ] = $ resolver ;
63
73
}
64
74
65
75
public function resolve ($ config )
@@ -72,8 +82,7 @@ public function resolve($config)
72
82
if (!isset ($ this ->resolverMap [$ name ]) || empty ($ values )) {
73
83
continue ;
74
84
}
75
- $ resolverMethod = $ this ->resolverMap [$ name ];
76
- $ values = $ this ->$ resolverMethod ($ values );
85
+ $ values = call_user_func_array ($ this ->resolverMap [$ name ], [$ values ]);
77
86
}
78
87
79
88
return $ config ;
0 commit comments