type = $type; $this->arguments = $arguments; } /** * @return string */ public function getType() { return $this->type; } /** * @return ISearchOperator[] */ public function getArguments() { return $this->arguments; } /** * @param ISearchOperator[] $arguments * @return void */ public function setArguments(array $arguments): void { $this->arguments = $arguments; } public function getQueryHint(string $name, $default) { return $this->hints[$name] ?? $default; } public function setQueryHint(string $name, $value): void { $this->hints[$name] = $value; } public function __toString(): string { if ($this->type === ISearchBinaryOperator::OPERATOR_NOT) { return '(not ' . $this->arguments[0] . ')'; } return '(' . implode(' ' . $this->type . ' ', $this->arguments) . ')'; } }