/** * @param StackLevel $stack * @return array */ private function groupOperators(StackLevel $stack) { $group = array(); foreach ($stack->get() as $item) { if ($item instanceof StackLevel) { $group[] = $this->groupOperators($item); } elseif ($item instanceof StackExpression) { $group[] = $this->arrangeSet($item); } else { throw new QueryParserException("Unexpected value in item of type: " . gettype($item)); } } return [$stack->getOperator()->get() => $group]; }
/** * @return int */ public function getLevel() { if (is_null($this->parent)) { return 0; } return $this->parent->getLevel() + 1; }