馃帶 Eventos y Listeners en Laravel

馃帶 Eventos y Listeners en Laravel

Desacopla la l贸gica de tu aplicaci贸n con Eventos y Listeners

En Laravel, los Eventos permiten disparar acciones cuando ocurre algo en el sistema (por ejemplo, un usuario se registra o realiza una compra). Los Listeners escuchan esos eventos y ejecutan tareas espec铆ficas en respuesta, como enviar un correo o guardar un registro.

馃摙 ¿Qu茅 es un Evento?

Un Evento representa algo que sucede dentro de la aplicaci贸n. Por ejemplo, UsuarioRegistrado puede ser un evento que se dispara cada vez que un nuevo usuario se registra.

馃З Crear un Evento

Desde la terminal, crea un evento con:


php artisan make:event UsuarioRegistrado
  

Esto genera app/Events/UsuarioRegistrado.php:


namespace App\Events;

use App\Models\User;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class UsuarioRegistrado
{
    use Dispatchable, SerializesModels;

    public $usuario;

    public function __construct(User $usuario)
    {
        $this->usuario = $usuario;
    }
}
  

馃帶 Crear un Listener

Los Listeners reaccionan a un evento cuando ocurre.


php artisan make:listener EnviarCorreoBienvenida --event=UsuarioRegistrado
  

Esto genera app/Listeners/EnviarCorreoBienvenida.php:


namespace App\Listeners;

use App\Events\UsuarioRegistrado;
use Mail;
use App\Mail\CorreoBienvenida;

class EnviarCorreoBienvenida
{
    public function handle(UsuarioRegistrado $event)
    {
        Mail::to($event->usuario->email)
            ->send(new CorreoBienvenida($event->usuario));
    }
}
  

⚙️ Registrar Eventos y Listeners

En el archivo app/Providers/EventServiceProvider.php:


protected $listen = [
    \App\Events\UsuarioRegistrado::class => [
        \App\Listeners\EnviarCorreoBienvenida::class,
    ],
];
  

馃殌 Disparar un Evento

Cuando un usuario se registra, podemos disparar el evento:


use App\Events\UsuarioRegistrado;

public function registrar(Request $request)
{
    $usuario = User::create($request->all());
    event(new UsuarioRegistrado($usuario));

    return redirect()->back()->with('success', 'Usuario registrado correctamente.');
}
  

馃挰 Ejemplo visual interactivo

A continuaci贸n ver谩s una simulaci贸n de c贸mo funciona el sistema de eventos y listeners. Al presionar el bot贸n, se dispara un evento de registro y el listener muestra una notificaci贸n de bienvenida.

馃帶 Simulador de Evento y Listener

Presiona el bot贸n para simular el registro de un nuevo usuario:

馃摝 Ventajas de usar Eventos y Listeners

  • Desacoplan la l贸gica del c贸digo principal.
  • Facilitan la reutilizaci贸n y mantenibilidad.
  • Permiten manejar acciones m煤ltiples a partir de un solo evento.
  • Se integran con colas (Jobs) para procesamiento as铆ncrono.

馃摎 Ejemplo de varios listeners para un mismo evento


protected $listen = [
    \App\Events\UsuarioRegistrado::class => [
        \App\Listeners\EnviarCorreoBienvenida::class,
        \App\Listeners\RegistrarActividad::class,
        \App\Listeners\AsignarRolInicial::class,
    ],
];
  
馃挕 Consejo: puedes combinar eventos con colas para ejecutar listeners de forma as铆ncrona y mejorar el rendimiento.

馃搵 En resumen:

  • Evento: algo que ocurre en el sistema (por ejemplo, “Usuario registrado”).
  • Listener: reacciona al evento (por ejemplo, enviar correo).
  • Usa event() para disparar eventos.
  • Laravel maneja todo el enlace entre ellos autom谩ticamente.

Publicar un comentario

0 Comentarios