Automattic\WooCommerce\Vendor\GraphQL\Validator\Rules
QueryComplexity::getVisitor
Метод класса: QueryComplexity{}
Хуков нет.
Возвращает
null. Ничего (null).
Использование
$QueryComplexity = new QueryComplexity(); $QueryComplexity->getVisitor( $context ): array;
- $context(QueryValidationContext) (обязательный)
- .
Код QueryComplexity::getVisitor() QueryComplexity::getVisitor WC 11.0.1
public function getVisitor(QueryValidationContext $context): array
{
$this->queryComplexity = 0;
$this->context = $context;
$this->variableDefs = new NodeList([]);
$this->fieldNodeAndDefs = new \ArrayObject();
return $this->invokeIfNeeded(
$context,
[
NodeKind::SELECTION_SET => function (SelectionSetNode $selectionSet) use ($context): void {
$this->fieldNodeAndDefs = $this->collectFieldASTsAndDefs(
$context,
$context->getParentType(),
$selectionSet,
null,
$this->fieldNodeAndDefs
);
},
NodeKind::VARIABLE_DEFINITION => function ($def): VisitorOperation {
$this->variableDefs[] = $def;
return Visitor::skipNode();
},
NodeKind::DOCUMENT => [
'leave' => function (DocumentNode $document) use ($context): void {
$errors = $context->getErrors();
if ($errors !== []) {
return;
}
if ($this->maxQueryComplexity === self::DISABLED) {
return;
}
foreach ($document->definitions as $definition) {
if (! $definition instanceof OperationDefinitionNode) {
continue;
}
$this->queryComplexity = $this->fieldComplexity($definition->selectionSet);
if ($this->queryComplexity > $this->maxQueryComplexity) {
$context->reportError(
new Error(static::maxQueryComplexityErrorMessage(
$this->maxQueryComplexity,
$this->queryComplexity
))
);
return;
}
}
},
],
]
);
}