From f89b4bef9e4247bdff9f80e1bbbd3eeb5268430e Mon Sep 17 00:00:00 2001 From: Milan de Graaf Date: Fri, 26 Jul 2019 13:30:52 +0200 Subject: [PATCH] Support for EventDispatcher->dispatch different definitions between Symfony 4.3 and up and Symfony 4.2 and lower --- Execution/Processor.php | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Execution/Processor.php b/Execution/Processor.php index a225e0a..a21a0ab 100644 --- a/Execution/Processor.php +++ b/Execution/Processor.php @@ -4,6 +4,7 @@ use Psr\Log\LoggerInterface; use Symfony\Component\DependencyInjection\ContainerAwareInterface; +use Symfony\Component\HttpKernel\Kernel; use Youshido\GraphQL\Execution\Context\ExecutionContextInterface; use Youshido\GraphQL\Execution\Processor as BaseProcessor; use Youshido\GraphQL\Execution\ResolveInfo; @@ -74,6 +75,17 @@ protected function resolveQuery(Query $query) return parent::resolveQuery($query); } + private function dispatchResolveEvent(ResolveEvent $event, $name){ + $major = Kernel::MAJOR_VERSION; + $minor = Kernel::MINOR_VERSION; + + if($major > 4 || ($major === 4 && $minor >= 3)){ + $this->eventDispatcher->dispatch($event, $name); + }else{ + $this->eventDispatcher->dispatch($name, $event); + } + } + protected function doResolve(FieldInterface $field, AstFieldInterface $ast, $parentValue = null) { /** @var AstQuery|AstField $ast */ @@ -81,7 +93,7 @@ protected function doResolve(FieldInterface $field, AstFieldInterface $ast, $par $astFields = $ast instanceof AstQuery ? $ast->getFields() : []; $event = new ResolveEvent($field, $astFields); - $this->eventDispatcher->dispatch('graphql.pre_resolve', $event); + $this->dispatchResolveEvent($event, 'graphql.pre_resolve'); $resolveInfo = $this->createResolveInfo($field, $astFields); $this->assertClientHasFieldAccess($resolveInfo); @@ -116,7 +128,7 @@ protected function doResolve(FieldInterface $field, AstFieldInterface $ast, $par } $event = new ResolveEvent($field, $astFields, $result); - $this->eventDispatcher->dispatch('graphql.post_resolve', $event); + $this->dispatchResolveEvent($event, 'graphql.post_resolve'); return $event->getResolvedValue(); }