shouldExecuteInFinalStage()) { $this->finalSteps[] = $step; return; } $this->initialSteps[] = $step; } /** * @return StepInterface[] */ public function getInitialSteps(): array { return $this->orderSteps($this->initialSteps); } /** * @return StepInterface[] */ public function getFinalSteps(): array { return $this->orderSteps($this->finalSteps); } /** * @return StepInterface[] */ private function orderSteps(array $steps): array { usort($steps, fn (StepInterface $step1, StepInterface $step2): int => $step1->getOrder() <=> $step2->getOrder()); return $steps; } }