Laravel Events: Os eventos no Laravel oferecem uma maneira elegante e desacoplada de comunicar diferentes partes de sua aplicação. Ao disparar um evento, você pode notificar outras partes do sistema sobre uma ação específica, permitindo que elas reajam de forma adequada.
Neste artigo, vamos explorar em detalhes como criar, registrar e testar eventos no Laravel, utilizando exemplos práticos para ilustrar cada conceito.
Gerando Events e Listeners
O Laravel facilita a criação de eventos e listeners através de comandos Artisan.
- Criando um Evento:
Bash
php artisan make:event UserRegistered
Isso gerará um novo arquivo em app/Events/UserRegistered.php
.
- Criando um Listener:
Bash
php artisan make:listener SendWelcomeEmail
Isso gerará um novo arquivo em app/Listeners/SendWelcomeEmail.php
.
Registrando Events e Listeners
Para que um listener seja notificado sobre um evento, é necessário registrá-lo no EventServiceProvider
.
PHP
// app/Providers/EventServiceProvider.php
protected $listen = [
Registered::class => [
SendWelcomeEmail::class,
],
];
Definindo Events e Listeners
- Evento:
PHP
namespace App\Events;
use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; use App\Models\User;
class UserRegistered { use Dispatchable, InteractsWithSockets, SerializesModels;
public $user;
public function __construct(User $user)
{
$this->user = $user;
}
}
- Listener
PHP
namespace App\Listeners;
use App\Events\UserRegistered;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Mail;
class SendWelcomeEmail
{
public function handle(UserRegistered $event)
{
Mail::to($event->user->email)->send(new WelcomeEmail($event->user));
}
}
Disparando um Evento
PHP
// Disparando o evento quando um novo usuário é registrado
event(new UserRegistered($user));
Testando Eventos
Para garantir a qualidade dos seus eventos, é fundamental escrever testes unitários. Utilizando o PHPUnit e o Mockery, podemos testar se os eventos são disparados corretamente e se os listeners executam as ações esperadas.
PHP
public function testUserRegisteredEventIsDispatched()
{
Event::fake();
$user = factory(User::class)->create();
event(new UserRegistered($user));
Event::assertDispatched(UserRegistered::class);
}
Conclusão
Laravel Events: Os eventos no Laravel são uma ferramenta poderosa para criar aplicações desacopladas e flexíveis. Ao dominar os conceitos de criação, registro e teste de eventos, você poderá construir aplicações mais robustas e escaláveis.
Ao utilizar eventos, você permite que diferentes partes de sua aplicação se comuniquem de forma assíncrona, facilitando a manutenção e a adição de novas funcionalidades. Além disso, os testes unitários garantem que seus eventos funcionem corretamente, evitando problemas em produção.
Mas antes de dominar o Laravel, se for o seu caso, toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo este poderoso framework. Para iniciar seus estudos no Laravel, você precisará dominar as seguintes tecnologias:
E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados: