GraphQL\Language\Parser::parseTypeReference PHP Method

parseTypeReference() public method

Handles the Type: TypeName, ListType, and NonNullType parsing rules.
public parseTypeReference ( ) : ListTypeNode | NameNode | NonNullTypeNode
return GraphQL\Language\AST\ListTypeNode | GraphQL\Language\AST\NameNode | GraphQL\Language\AST\NonNullTypeNode
    function parseTypeReference()
    {
        $start = $this->lexer->token;
        if ($this->skip(Token::BRACKET_L)) {
            $type = $this->parseTypeReference();
            $this->expect(Token::BRACKET_R);
            $type = new ListTypeNode(['type' => $type, 'loc' => $this->loc($start)]);
        } else {
            $type = $this->parseNamedType();
        }
        if ($this->skip(Token::BANG)) {
            return new NonNullTypeNode(['type' => $type, 'loc' => $this->loc($start)]);
        }
        return $type;
    }

Usage Example

Ejemplo n.º 1
0
 /**
  * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for
  * that type.
  * Throws GraphQLError if a syntax error is encountered.
  *
  * This is useful within tools that operate upon GraphQL Types directly and
  * in isolation of complete GraphQL documents.
  *
  * Consider providing the results to the utility function: typeFromAST().
  * @param Source|string $source
  * @param array $options
  * @return ListType|Name|NonNullType
  */
 public static function parseType($source, array $options = [])
 {
     $sourceObj = $source instanceof Source ? $source : new Source($source);
     $parser = new Parser($sourceObj, $options);
     $parser->expect(Token::SOF);
     $type = $parser->parseTypeReference();
     $parser->expect(Token::EOF);
     return $type;
 }