*/ private array $clauses; public function __construct( \Spameri\ElasticQuery\Query\LeafQueryInterface $clause, private int $slop = 0, private bool $inOrder = true, ) { $this->clauses = [$clause]; } public function addClause(\Spameri\ElasticQuery\Query\LeafQueryInterface $clause): void { $this->clauses[] = $clause; } public function key(): string { $keys = []; foreach ($this->clauses as $clause) { $keys[] = $clause->key(); } return 'span_near_' . \implode('-', $keys); } /** * @return array> */ public function toArray(): array { $clauses = []; foreach ($this->clauses as $clause) { $clauses[] = $clause->toArray(); } return [ 'span_near' => [ 'clauses' => $clauses, 'slop' => $this->slop, 'in_order' => $this->inOrder, ], ]; } }