GraphQL\Validator\Rules\QueryComplexity::nodeComplexity PHP Метод

nodeComplexity() приватный Метод

private nodeComplexity ( Node $node, $complexity )
$node GraphQL\Language\AST\Node
    private function nodeComplexity(Node $node, $complexity = 0)
    {
        switch ($node->kind) {
            case NodeKind::FIELD:
                /* @var FieldNode $node */
                // default values
                $args = [];
                $complexityFn = FieldDefinition::DEFAULT_COMPLEXITY_FN;
                // calculate children complexity if needed
                $childrenComplexity = 0;
                // node has children?
                if (isset($node->selectionSet)) {
                    $childrenComplexity = $this->fieldComplexity($node);
                }
                $astFieldInfo = $this->astFieldInfo($node);
                $fieldDef = $astFieldInfo[1];
                if ($fieldDef instanceof FieldDefinition) {
                    $args = $this->buildFieldArguments($node);
                    //get complexity fn using fieldDef complexity
                    if (method_exists($fieldDef, 'getComplexityFn')) {
                        $complexityFn = $fieldDef->getComplexityFn();
                    }
                }
                $complexity += call_user_func_array($complexityFn, [$childrenComplexity, $args]);
                break;
            case NodeKind::INLINE_FRAGMENT:
                /* @var InlineFragmentNode $node */
                // node has children?
                if (isset($node->selectionSet)) {
                    $complexity = $this->fieldComplexity($node, $complexity);
                }
                break;
            case NodeKind::FRAGMENT_SPREAD:
                /* @var FragmentSpreadNode $node */
                $fragment = $this->getFragment($node);
                if (null !== $fragment) {
                    $complexity = $this->fieldComplexity($fragment, $complexity);
                }
                break;
        }
        return $complexity;
    }