public static isOutputType ( $type ) : boolean | ||
$type | ||
return | boolean |
public static function noInputTypesAsOutputFieldsRule() { return function ($context) { $operationMayNotBeInputType = function (Type $type, $operation) { if (!Type::isOutputType($type)) { return new Error("Schema {$operation} must be Object Type but got: {$type}."); } return null; }; /** @var Schema $schema */ $schema = $context['schema']; $typeMap = $schema->getTypeMap(); $errors = []; $queryType = $schema->getQueryType(); if ($queryType) { $queryError = $operationMayNotBeInputType($queryType, 'query'); if ($queryError !== null) { $errors[] = $queryError; } } $mutationType = $schema->getMutationType(); if ($mutationType) { $mutationError = $operationMayNotBeInputType($mutationType, 'mutation'); if ($mutationError !== null) { $errors[] = $mutationError; } } $subscriptionType = $schema->getSubscriptionType(); if ($subscriptionType) { $subscriptionError = $operationMayNotBeInputType($subscriptionType, 'subscription'); if ($subscriptionError !== null) { $errors[] = $subscriptionError; } } foreach ($typeMap as $typeName => $type) { if ($type instanceof ObjectType || $type instanceof InterfaceType) { $fields = $type->getFields(); foreach ($fields as $fieldName => $field) { if ($field->getType() instanceof InputObjectType) { $errors[] = new Error("Field {$typeName}.{$field->name} is of type " . "{$field->getType()->name}, which is an input type, but field types " . "must be output types!"); } } } } return !empty($errors) ? $errors : null; }; }
public function testIdentifiesOutputTypes() { $expected = [[Type::int(), true], [$this->objectType, true], [$this->interfaceType, true], [$this->unionType, true], [$this->enumType, true], [$this->inputObjectType, false]]; foreach ($expected as $index => $entry) { $this->assertSame($entry[1], Type::isOutputType($entry[0]), "Type {$entry[0]} was detected incorrectly"); } }