Ejemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function coerceLiteral(Node $node)
 {
     if ($node instanceof StringValue || $node instanceof IntValue) {
         return $node->get('value');
     }
     return NULL;
 }
Ejemplo n.º 2
0
 /**
  * {@inheritdoc}
  */
 public function coerceLiteral(Node $node)
 {
     if ($node instanceof IntValue) {
         $num = $node->get('value');
         if ($num <= PHP_INT_MAX && $num >= -PHP_INT_MAX) {
             return intval($num);
         }
     }
     return NULL;
 }
Ejemplo n.º 3
0
 /**
  * {@inheritdoc}
  */
 public function coerceLiteral(Node $node)
 {
     if ($node instanceof IntValue || $node instanceof FloatValue) {
         $num = (double) $node->get('value');
         if ($num <= PHP_INT_MAX && $num >= -PHP_INT_MAX) {
             return $num;
         }
     }
     return NULL;
 }
Ejemplo n.º 4
0
 /**
  * @param \Fubhy\GraphQL\Language\Node $value
  *
  * @return string|null
  */
 public function coerceLiteral(Node $value)
 {
     if ($value instanceof EnumValue) {
         $key = $value->get('value');
         if (($lookup = $this->getNameLookup()) && isset($lookup[$key])) {
             return $lookup[$key] ? $lookup[$key]->getName() : NULL;
         }
     }
     return NULL;
 }
Ejemplo n.º 5
0
 /**
  * @param Node $node
  */
 protected function enter(Node $node)
 {
     $schema = $this->_schema;
     switch ($node::KIND) {
         case Node::KIND_SELECTION_SET:
             $rawType = $this->getType();
             $rawType = isset($rawType) ? $rawType->getUnmodifiedType() : NULL;
             $compositeType = NULL;
             if (isset($rawType) && $rawType->isCompositeType()) {
                 $compositeType = $rawType;
             }
             array_push($this->parentTypeStack, $compositeType);
             break;
         case Node::KIND_DIRECTIVE:
             $this->directive = $schema->getDirective($node->get('name')->get('value'));
             break;
         case Node::KIND_FIELD:
             $parentType = $this->getParentType();
             $fieldDefinition = NULL;
             if (isset($parentType)) {
                 $fieldDefinition = self::getFieldDefinition($schema, $parentType, $node);
             }
             array_push($this->fieldDefinitionStack, $fieldDefinition);
             array_push($this->typeStack, $fieldDefinition ? $fieldDefinition->getType() : NULL);
             break;
         case Node::KIND_OPERATION_DEFINITION:
             $type = NULL;
             if ($node->get('operation') === 'query') {
                 $type = $schema->getQueryType();
             } else {
                 if ($node->get('operation') === 'mutation') {
                     $type = $schema->getMutationType();
                 }
             }
             array_push($this->typeStack, $type);
             break;
         case Node::KIND_INLINE_FRAGMENT:
         case Node::KIND_FRAGMENT_DEFINITION:
             $type = $schema->getType($node->get('typeCondition')->get('value'));
             array_push($this->typeStack, $type);
             break;
         case Node::KIND_VARIABLE_DEFINITION:
             array_push($this->inputTypeStack, self::typeFromAST($schema, $node->get('type')));
             break;
         case Node::KIND_ARGUMENT:
             if (!empty($this->fieldDefinitionStack)) {
                 $field = $this->fieldDefinitionStack[count($this->fieldDefinitionStack) - 1];
             } else {
                 $field = NULL;
             }
             $argType = NULL;
             if ($field) {
                 $argDefinition = NULL;
                 foreach ($field->getArguments() as $arg) {
                     if ($arg->getName() === $node->get('name')->get('value')) {
                         $argDefinition = $arg;
                     }
                     break;
                 }
                 if ($argDefinition) {
                     $argType = $argDefinition->getType();
                 }
             }
             array_push($this->inputTypeStack, $argType);
             break;
         case Node::KIND_ARRAY_VALUE:
             $arrayType = $this->getInputType();
             $arrayType = isset($arrayType) ? $arrayType->getNullableType() : NULL;
             array_push($this->inputTypeStack, $arrayType instanceof ListModifier ? $arrayType->getWrappedType() : NULL);
             break;
         case Node::KIND_OBJECT_FIELD:
             $objectType = $this->getInputType();
             $objectType = isset($objectType) ? $objectType->getUnmodifiedType() : NULL;
             $fieldType = NULL;
             if ($objectType instanceof InputObjectType) {
                 $tmp = $objectType->getFields();
                 $inputField = isset($tmp[$node->get('name')->get('value')]) ? $tmp[$node->get('name')->get('value')] : NULL;
                 $fieldType = $inputField ? $inputField->getType() : NULL;
             }
             array_push($this->inputTypeStack, $fieldType);
             break;
     }
 }
Ejemplo n.º 6
0
 /**
  * {@inheritdoc}
  */
 public function coerceLiteral(Node $node)
 {
     return $node instanceof StringValue ? $node->get('value') : NULL;
 }