Merhaba arkadaşlar, bugün sizlere Laravel’de Event (Olay) ve Listener (Dinleyici) kullanımını anlatacağım. Event ve Listener yapısı, uygulamanızda gerçekleşen belirli olayları dinlemek ve bu olaylara tepki vermek için kullanılır. Bu yapı, uygulamanızın daha modüler ve esnek olmasını sağlar. Gelin, bu konuları adım adım inceleyelim.
Laravel’de event ve listener oluşturmak oldukça kolaydır. Öncelikle, bir event ve bu event’i dinleyen bir listener oluşturalım.
Event Oluşturma:
php artisan make:event UserRegistered
Bu komut, app/Events/UserRegistered.php
dosyasını oluşturacaktır. Event dosyasını açarak gerekli özellikleri tanımlayabilirsiniz.
Örnek Event Kodu:
namespace App\Events; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; class UserRegistered { use Dispatchable, InteractsWithSockets, SerializesModels; public $user; public function __construct($user) { $this->user = $user; } }
Bu event, bir kullanıcı kayıt olduğunda tetiklenecek ve kullanıcı bilgilerini taşıyacaktır.
Listener Oluşturma:
php artisan make:listener SendWelcomeEmail
Bu komut, app/Listeners/SendWelcomeEmail.php
dosyasını oluşturacaktır. Listener dosyasını açarak handle
metodunu düzenleyebilirsiniz.
Örnek Listener Kodu:
namespace App\Listeners; use App\Events\UserRegistered; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Support\Facades\Mail; use App\Mail\WelcomeEmail; class SendWelcomeEmail { public function handle(UserRegistered $event) { Mail::to($event->user->email)->send(new WelcomeEmail($event->user)); } }
Bu listener, UserRegistered
event’i gerçekleştiğinde, kullanıcıya bir hoş geldin e-postası gönderecektir.
Event ve listener’ı kullanabilmek için, app/Providers/EventServiceProvider.php
dosyasında kaydetmeniz gerekiyor. Örneğin:
protected $listen = [ 'App\Events\UserRegistered' => [ 'App\Listeners\SendWelcomeEmail', ], ];
Bu kod, UserRegistered
event’i gerçekleştiğinde SendWelcomeEmail
listener’ının çalışmasını sağlar.
Event’i tetiklemek için event()
fonksiyonunu kullanabilirsiniz. Örneğin, bir kullanıcı kayıt olduğunda UserRegistered
event’ini tetikleyelim:
use App\Events\UserRegistered; public function register(Request $request) { // Kullanıcı kayıt işlemi $user = User::create($request->all()); // Event tetikleme event(new UserRegistered($user)); return redirect('/')->with('success', 'Kayıt başarılı!'); }
Bu kod, kullanıcı kayıt olduğunda UserRegistered
event’ini tetikler ve SendWelcomeEmail
listener’ı çalışır.
Eğer listener’ın asenkron olarak çalışmasını istiyorsanız, listener’ı ShouldQueue
interface’ini implement ederek kuyruğa alabilirsiniz.
Örnek Queue Kullanımı:
namespace App\Listeners; use App\Events\UserRegistered; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Support\Facades\Mail; use App\Mail\WelcomeEmail; class SendWelcomeEmail implements ShouldQueue { use InteractsWithQueue; public function handle(UserRegistered $event) { Mail::to($event->user->email)->send(new WelcomeEmail($event->user)); } }
Bu kod, SendWelcomeEmail
listener’ını kuyruğa alır ve asenkron olarak çalıştırır.
Laravel’de event ve listener kullanımı, uygulamanızda gerçekleşen olayları dinlemek ve bu olaylara tepki vermek için güçlü bir yapı sunar. Eğer uygulamanızın daha modüler ve esnek olmasını istiyorsanız, event ve listener’ları mutlaka kullanmalısınız. Bir sonraki yazımda, Laravel’de API Güvenliği: JWT ve OAuth2 Entegrasyonu konusuna değineceğim. Görüşmek üzere!