Listeners y Eventos en Laravel




Listeners y Eventos en Laravel

Los eventos y listeners en Laravel proporcionan una forma sencilla de implementar el patrón Observer. Los eventos son clases que representan "algo que ha sucedido" en tu aplicación, mientras que los listeners son clases que realizan acciones en respuesta a esos eventos. Esto permite desacoplar la lógica de tu aplicación y hacerla más mantenible.

Conceptos clave

  • Eventos: Clases que representan acciones que han ocurrido.
  • Listeners: Clases que ejecutan lógica en respuesta a eventos.
  • Despacho de eventos: El proceso de notificar a los listeners sobre un evento.
  • Registro de eventos y listeners: Se realiza en el archivo app/Providers/EventServiceProvider.php.

Los eventos y listeners son una herramienta poderosa para construir aplicaciones Laravel modulares y escalables. Permiten manejar la lógica de la aplicación de manera organizada y eficiente.


Ejemplo de evento y listener

                // Generar evento y listener
                php artisan make:event PedidoCreado
                php artisan make:listener EnviarNotificacionPedido --event=PedidoCreado

                // app/Events/PedidoCreado.php
                namespace App\Events;

                use Illuminate\Queue\SerializesModels;

                class PedidoCreado {
                    use SerializesModels;

                    public $pedido;

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

                // app/Listeners/EnviarNotificacionPedido.php
                namespace App\Listeners;

                use App\Events\PedidoCreado;
                use Illuminate\Contracts\Queue\ShouldQueue;

                class EnviarNotificacionPedido implements ShouldQueue {
                    public function handle(PedidoCreado $event) {
                        // Lógica para enviar notificación del pedido
                    }
                }

                // app/Providers/EventServiceProvider.php
                protected $listen = [
                    PedidoCreado::class => [
                        EnviarNotificacionPedido::class,
                    ],
                ];

                // Despachar evento
                event(new PedidoCreado($pedido));
            



Publicar un comentario

0 Comentarios