reference, $obligation->sequence, $obligation->hash_id) */ class CreateStepsProcessor { private $canCreateStep; private $createsSteps; private $fetchesOrder; private $fetchesSteps; public function __construct(CanCreateStep $canCreateStep, FetchesOrder $fetchesOrder, FetchesSteps $fetchesSteps, CreatesSteps $createsSteps ) { $this->canCreateStep = $canCreateStep; $this->createsSteps = $createsSteps; $this->fetchesOrder = $fetchesOrder; $this->fetchesSteps = $fetchesSteps; } /** * @param Order $order * @param string $currentStep * @param $appointee_id * @return Model * @throws \App\Classes\Exceptions\AccessForbiddenException * @throws \App\Classes\Exceptions\MalformedRequestException * @throws \App\Classes\Exceptions\RequestValidationException */ public function execute(Order $order, string $currentStep, $appointee_id){ // FIXME: Incorrect StepsObject instantiation - uses 9 parameters instead of correct 4-parameter pattern // Correct pattern: new StepsObject($appointee_id, $obligation->reference, $obligation->sequence, $obligation->hash_id) $stepObject = new StepsObject( $appointee_id, $currentStep, true, 0, OrderStatus::PROCESSING, 0, null, 0, null); $this->canCreateStep->passes($stepObject); return $this->createsSteps->execute($order, $order_steps_object); } }