コード例 #1
0
ファイル: TypeInfo.php プロジェクト: fubhy/graphql-php
 /**
  * Not exactly the same as the executor's definition of getFieldDef, in this
  * statically evaluated environment we do not always have an Object type,
  * and need to handle Interface and Union types.
  *
  * @param Schema $schema
  * @param Type $parentType
  * @param Field $fieldAST
  *
  * @return FieldDefinition
  */
 protected static function getFieldDefinition(Schema $schema, Type $parentType, Field $fieldAST)
 {
     $name = $fieldAST->get('name')->get('value');
     $schemaMeta = Introspection::schemaMetaFieldDefinition();
     if ($name === $schemaMeta->getName() && $schema->getQueryType() === $parentType) {
         return $schemaMeta;
     }
     $typeMeta = Introspection::typeMetaFieldDefinition();
     if ($name === $typeMeta->getName() && $schema->getQueryType() === $parentType) {
         return $typeMeta;
     }
     $typeNameMeta = Introspection::typeNameMetaFieldDefinition();
     if ($name === $typeNameMeta->getName() && ($parentType instanceof ObjectType || $parentType instanceof InterfaceType || $parentType instanceof UnionType)) {
         return $typeNameMeta;
     }
     if ($parentType instanceof ObjectType || $parentType instanceof InterfaceType) {
         $fields = $parentType->getFields();
         return isset($fields[$name]) ? $fields[$name] : NULL;
     }
     return NULL;
 }