$executor */ public function __construct( private FindAllEmployees $usecase, private UsecaseExecutor $executor, private EmployeesIndexPresenter $presenter, ) { } public function __invoke(EmployeesIndexRequest $request): ApiResponse { $input = $this->inputFrom($request); $response = UsecaseBuilder::using($this->executor) ->do($this->usecase) ->from($input) ->with($this->presenter) ->run(); return new EmployeesIndexResponse($response, $request->toUri()); } private function inputFrom(EmployeesIndexRequest $request): Input { return new Input( pagination: $request->pagination(), sorter: $request->sorter(), filter: $request->filter(), ); } }