Eventos personalizados em Laravel

Neste artigo, vamos explorar os fundamentos do gerenciamento de eventos no Laravel. Também criaremos um exemplo do mundo real de um evento e ouvinte personalizados.

O conceito de eventos no Laravel é baseado em um padrão de projeto de software muito popular – o padrão observador. Nesse padrão, o sistema gera eventos quando algo acontece e você pode definir ouvintes que ouvem esses eventos e reagem de acordo. É um recurso realmente útil que permite desacoplar componentes em um sistema que, de outra forma, resultaria em um código fortemente acoplado.

Por exemplo, digamos que você queira notificar todos os módulos em um sistema quando alguém fizer login em seu site. Assim, ele permite que eles reajam a esse evento de login, seja para enviar um e-mail ou notificação no aplicativo ou qualquer coisa que queira reagir a esse evento de login.

Noções básicas de eventos e ouvintes

Nesta seção, exploraremos a maneira do Laravel de implementar eventos e ouvintes no framework principal. Se você está familiarizado com a arquitetura do Laravel, provavelmente sabe que o Laravel implementa o conceito de um provedor de serviços que permite injetar diferentes serviços em uma aplicação.

Da mesma forma, o Laravel fornece um built-in EventServiceProvider.php classe que nos permite definir mapeamentos de ouvinte de eventos para um aplicativo.

Vá em frente e puxe o app/Providers/EventServiceProvider.php Arquivo.

Vamos dar uma olhada de perto no $listen propriedade, que permite definir uma matriz de eventos e ouvintes associados. As chaves de array correspondem a eventos em um sistema, e seus valores correspondem a listeners que serão acionados quando o evento correspondente for gerado em um sistema.

Eu prefiro passar por um exemplo do mundo real para demonstrá-lo ainda mais. Como você provavelmente sabe, o Laravel fornece um sistema de autenticação embutido que facilita recursos como login, registro e afins.

Suponha que você deseja enviar uma notificação por e-mail, como medida de segurança, quando alguém fizer login no aplicativo. Se o Laravel não suportasse o recurso de ouvinte de eventos, você pode ter editado a classe principal ou alguma outra maneira de conectar seu código que envia um e-mail.

Na verdade, você está no lado mais sortudo, pois o Laravel o ajuda a resolver esse problema usando o ouvinte de eventos. Vamos revisar o app/Providers/EventServiceProvider.php arquivo para se parecer com o seguinte.

IlluminateAuthEventsLogin é um evento que será gerado pelo Auth plugin quando alguém faz login em um aplicativo. Ligamos esse evento ao AppListenersSendEmailNotification ouvinte, então ele será acionado no login evento.

É claro que você precisa definir o AppListenersSendEmailNotification classe de ouvinte em primeiro lugar. Como sempre, o Laravel permite que você crie um código de modelo de um ouvinte usando o artisan comando.

Este comando gera classes de eventos e ouvintes listadas no $listen propriedade.

No nosso caso, o IlluminateAuthEventsLogin evento já existe, então ele apenas cria o AppListenersSendEmailNotification classe de ouvinte. Na verdade, teria criado o IlluminateAuthEventsLogin classe de evento também se ela não existisse em primeiro lugar.

Vamos dar uma olhada na classe listener criada em app/Listeners/SendEmailNotification.php.

Originally posted 2022-05-20 09:18:12.

Deixe uma resposta