vendor/api-platform/core/src/Symfony/GraphQl/Resolver/Factory/DataCollectorResolverFactory.php line 29

  1. <?php
  2. /*
  3.  * This file is part of the API Platform project.
  4.  *
  5.  * (c) Kévin Dunglas <dunglas@gmail.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. declare(strict_types=1);
  11. namespace ApiPlatform\Symfony\GraphQl\Resolver\Factory;
  12. use ApiPlatform\GraphQl\Resolver\Factory\ResolverFactoryInterface;
  13. use ApiPlatform\Metadata\GraphQl\Operation;
  14. use GraphQL\Type\Definition\ResolveInfo;
  15. use Symfony\Component\HttpFoundation\RequestStack;
  16. final class DataCollectorResolverFactory implements ResolverFactoryInterface
  17. {
  18.     public function __construct(private readonly ResolverFactoryInterface $resolverFactory, private readonly ?RequestStack $requestStack)
  19.     {
  20.     }
  21.     public function __invoke(?string $resourceClass null, ?string $rootClass null, ?Operation $operation null): callable
  22.     {
  23.         return function (?array $source, array $args$contextResolveInfo $info) use ($resourceClass$rootClass$operation) {
  24.             if ($this->requestStack && null !== $request $this->requestStack->getCurrentRequest()) {
  25.                 $request->attributes->set(
  26.                     '_graphql_args',
  27.                     [$resourceClass => $args] + $request->attributes->get('_graphql_args', [])
  28.                 );
  29.             }
  30.             return ($this->resolverFactory)($resourceClass$rootClass$operation)($source$args$context$info);
  31.         };
  32.     }
  33. }