🎧 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,
    ],
];
  
  📋 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.
 
  
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias