Black Friday: coupon FRIDAY24 for 40% off Yearly/Lifetime membership! Read more here

Add conditionable behavior to your own classes

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();
// ---
 
// ...
}
}

Like our articles?

Become a Premium Member for $129/year or $29/month
What else you will get:
  • 67 courses (1172 lessons, total 43 h 18 min)
  • 90 long-form tutorials (one new every week)
  • access to project repositories
  • access to private Discord

Recent New Courses