vendor/overblog/graphql-bundle/src/ExpressionLanguage/ExpressionFunction/GraphQL/Relay/GlobalID.php line 17

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction\GraphQL\Relay;
  4. use Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction;
  5. use Overblog\GraphQLBundle\Relay\Node\GlobalId as GlobalIdHelper;
  6. use function sprintf;
  7. final class GlobalID extends ExpressionFunction
  8. {
  9. public function __construct()
  10. {
  11. parent::__construct(
  12. 'globalId',
  13. function (string $id, string $typeName = null): string {
  14. $typeName = $this->isTypeNameEmpty($typeName) ? '$info->parentType->name' : $typeName;
  15. return sprintf('\%s::toGlobalId(%s, %s)', GlobalIdHelper::class, $typeName, $id);
  16. },
  17. function ($arguments, $id, $typeName = null) {
  18. $typeName = empty($typeName) ? $arguments['info']->parentType->name : $typeName;
  19. return GlobalIdHelper::toGlobalId($typeName, $id);
  20. }
  21. );
  22. }
  23. private function isTypeNameEmpty(?string $typeName): bool
  24. {
  25. return null === $typeName || '""' === $typeName || 'null' === $typeName || 'false' === $typeName;
  26. }
  27. }