GraphQL\Validator\Rules\ProvidedNonNullArguments::__invoke PHP Method

__invoke() public method

public __invoke ( ValidationContext $context )
$context GraphQL\Validator\ValidationContext
    public function __invoke(ValidationContext $context)
    {
        return [NodeKind::FIELD => ['leave' => function (FieldNode $fieldNode) use($context) {
            $fieldDef = $context->getFieldDef();
            if (!$fieldDef) {
                return Visitor::skipNode();
            }
            $argNodes = $fieldNode->arguments ?: [];
            $argNodeMap = [];
            foreach ($argNodes as $argNode) {
                $argNodeMap[$argNode->name->value] = $argNodes;
            }
            foreach ($fieldDef->args as $argDef) {
                $argNode = isset($argNodeMap[$argDef->name]) ? $argNodeMap[$argDef->name] : null;
                if (!$argNode && $argDef->getType() instanceof NonNull) {
                    $context->reportError(new Error(self::missingFieldArgMessage($fieldNode->name->value, $argDef->name, $argDef->getType()), [$fieldNode]));
                }
            }
        }], NodeKind::DIRECTIVE => ['leave' => function (DirectiveNode $directiveNode) use($context) {
            $directiveDef = $context->getDirective();
            if (!$directiveDef) {
                return Visitor::skipNode();
            }
            $argNodes = $directiveNode->arguments ?: [];
            $argNodeMap = [];
            foreach ($argNodes as $argNode) {
                $argNodeMap[$argNode->name->value] = $argNodes;
            }
            foreach ($directiveDef->args as $argDef) {
                $argNode = isset($argNodeMap[$argDef->name]) ? $argNodeMap[$argDef->name] : null;
                if (!$argNode && $argDef->getType() instanceof NonNull) {
                    $context->reportError(new Error(self::missingDirectiveArgMessage($directiveNode->name->value, $argDef->name, $argDef->getType()), [$directiveNode]));
                }
            }
        }]];
    }