steps = [ new PathPrefixOptimizer(), new MergeDistributiveOperations(), new FlattenSingleArgumentBinaryOperation(), new FlattenNestedBool(), new OrEqualsToIn(), new FlattenNestedBool(), new SplitLargeIn(), ]; } public function processOperator(ISearchOperator &$operator) { foreach ($this->steps as $step) { $step->inspectOperator($operator); } foreach ($this->steps as $step) { $step->processOperator($operator); } } }