Skip to content

CQBus Mediatorfor Laravel

A modern CQRS Mediator using PHP 8 Attributes, auto-discovery, and routing pipelines.


Stop writing Fat Controllers. Start writing Actions.

Decouple your business logic, routing, and side effects instantly.

php
// app/Http/Actions/RegisterUserAction.php
use Ignaciocastro0713\CqbusMediator\Attributes\Routing\Api;
use Ignaciocastro0713\CqbusMediator\Attributes\Pipelines\Pipeline;
use Ignaciocastro0713\CqbusMediator\Traits\AsAction;

#[Api]
#[Pipeline(DatabaseTransactionPipeline::class)]
class RegisterUserAction
{
    use AsAction;

    public function __construct(private readonly Mediator $mediator) {}

    public static function route(Router $router): void
    {
        $router->post('/register');
    }

    public function handle(RegisterUserRequest $request): JsonResponse
    {
        $user = $this->mediator->send($request); 
        $this->mediator->publish(new UserRegisteredEvent($user)); 
        
        return response()->json($user, 201);
    }
}