You can use the Conditionable Trait to avoid using if/else
and promote method chaining.
namespace App\Services; use Illuminate\Support\Traits\Conditionable; class MyService{ use Conditionable; // ...}
namespace App\Http\Controllers; use App\Http\Controllers\Controller;use App\Http\Requests\MyRequest;use App\Services\MyService; class MyController extends Controller{ public function __invoke(MyRequest $request, MyService $service) { // Not good $service->addParam($request->param); if ($request->has('something')) { $service->methodToBeCalled(); } $service->execute(); // --- // Better $service->addParam($request->param) ->when($request->has('something'), fn ($service) => $service->methodToBeCalled()) ->execute(); // --- // ... }}