Eventos y Listeners en Laravel

Eventos Listeners Laravel
Solucionex
28
Ene 26

Conforme nuestra aplicación Laravel crece, la lógica del proyecto puede torcerse. Servicios enormes, controladores con demasiadas responsabilidades, etc.

Gracias a los Eventos y Listeners de Laravel podemos evitar estos casos. En este artículo veremos cuándo usarlos y cómo implementarlos.

 

¿Qué son los Eventos y Listeners en Laravel?

Un evento representa algo que ha ocurrido en nuestra aplicación. Por ejemplo, un usuario añade un artículo a su cesta de la compra. Este evento no hace nada por sí solo, pero nos ofrece algo que sí vamos a poder utilizar, una notificación. Y aquí es donde entran los listeners.

Un listener podríamos definirlo como el que reacciona a la notificación de este evento. Siguiendo el ejemplo de antes, un usuario añade un artículo a su carrito y nuestro listener revisa si ese artículo puede ser beneficiado por algún cupón.

Cuando usamos eventos y listeners conseguimos separar ciertas funcionalidades de nuestra aplicación a sus listeners correspondientes.

 

Crear un evento

Gracias a Artisan podemos crear un evento de la siguiente manera:

php artisan make:event

Laravel nos preguntará en la terminal a qué clase estamos creando el evento.

 

Creando el Listener

Para crear nuestro listener volvemos a invocar a make pero en este caso con listener:

php artisan make:listener

Al igual que con los eventos, es posible incluir los argumentos.

 

Por defecto, Laravel buscará y registrará automáticamente nuestros listeners escaneando la carpeta Listeners de nuestra aplicación.

Es aquí donde ponemos toda la lógica que no queremos mezclar con el controlador.

public function handle(ProductAddedToCart $event)
{
   if ($event->product->price > 100) {
       // Aquí podríamos aplicar un cupón, avisar al usuario, etc.
   }
}

Si el listener va a realizar una tarea pesada, podemos ejecutarlo en una cola implementando ShouldQueue.

 

Conclusión

Los Eventos y Listeners en Laravel nos ayudan a mantener una arquitectura limpia y escalable, por lo que es recomendable usarlos desde fases tempranas de los proyectos.

 

Fuentes: Documentación oficial de laravel

laravel