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(); // --- // ... }}
Enjoyed This Tip?
Get access to all premium tutorials, video and text courses, and exclusive Laravel resources. Join our community of 10,000+ developers.
Recent Courses
Filament 4 From Scratch
28 lessons
2 h 25 min
Claude Code for Laravel Projects: Crash Course
8 lessons
48 min
Laravel HTTP Client and 3rd-Party APIs
7 lessons
50 min