66
77use GraphQL \Type \Definition \ResolveInfo ;
88use GraphQL \Type \Definition \Type ;
9- use LogicException ;
10- use Overblog \GraphQLBundle \Resolver \MutationResolver ;
11- use Overblog \GraphQLBundle \Resolver \QueryResolver ;
12- use Overblog \GraphQLBundle \Resolver \TypeResolver ;
139use Overblog \GraphQLBundle \Validator \InputValidator ;
10+ use Symfony \Component \DependencyInjection \ServiceLocator ;
1411
1512/**
1613 * Container for special services to be passed to all generated types.
1714 */
18- final class GraphQLServices
15+ final class GraphQLServices extends ServiceLocator
1916{
20- private array $ services ;
21- private TypeResolver $ types ;
22- private QueryResolver $ queryResolver ;
23- private MutationResolver $ mutationResolver ;
24-
25- public function __construct (
26- TypeResolver $ typeResolver ,
27- QueryResolver $ queryResolver ,
28- MutationResolver $ mutationResolver ,
29- array $ services = []
30- ) {
31- $ this ->types = $ typeResolver ;
32- $ this ->queryResolver = $ queryResolver ;
33- $ this ->mutationResolver = $ mutationResolver ;
34- $ this ->services = $ services ;
35- }
36-
37- /**
38- * @return mixed
39- */
40- public function get (string $ name )
41- {
42- if (!isset ($ this ->services [$ name ])) {
43- throw new LogicException (sprintf ('GraphQL service "%s" could not be located. You should define it. ' , $ name ));
44- }
45-
46- return $ this ->services [$ name ];
47- }
48-
49- /**
50- * Get all GraphQL services.
51- */
52- public function getAll (): array
53- {
54- return $ this ->services ;
55- }
56-
57- public function has (string $ name ): bool
58- {
59- return isset ($ this ->services [$ name ]);
60- }
61-
6217 /**
6318 * @param mixed ...$args
6419 *
6520 * @return mixed
6621 */
6722 public function query (string $ alias , ...$ args )
6823 {
69- return $ this ->queryResolver ->resolve ([$ alias , $ args ]);
24+ return $ this ->get ( ' queryResolver ' ) ->resolve ([$ alias , $ args ]);
7025 }
7126
7227 /**
@@ -76,12 +31,12 @@ public function query(string $alias, ...$args)
7631 */
7732 public function mutation (string $ alias , ...$ args )
7833 {
79- return $ this ->mutationResolver ->resolve ([$ alias , $ args ]);
34+ return $ this ->get ( ' mutationResolver ' ) ->resolve ([$ alias , $ args ]);
8035 }
8136
8237 public function getType (string $ typeName ): ?Type
8338 {
84- return $ this ->types ->resolve ($ typeName );
39+ return $ this ->get ( ' typeResolver ' ) ->resolve ($ typeName );
8540 }
8641
8742 /**
@@ -92,7 +47,7 @@ public function getType(string $typeName): ?Type
9247 */
9348 public function createInputValidator ($ value , ArgumentInterface $ args , $ context , ResolveInfo $ info ): InputValidator
9449 {
95- return $ this ->services [ 'input_validator_factory ' ] ->create (
50+ return $ this ->get ( 'input_validator_factory ' ) ->create (
9651 new ResolverArgs ($ value , $ args , $ context , $ info )
9752 );
9853 }
0 commit comments