Laravel Event & Listener Kullanımı
Laravel Event & Listener Kullanımı: Modüler ve Esnek Uygulama Geliştirme
Laravel, modern web uygulamaları geliştirirken kullanıcı deneyimini artırmak ve kodunuzu daha modüler hale getirmek için Event (Olay) ve Listener (Dinleyici) yapısını sunar. Bu yapı, uygulama içindeki önemli olayları dinleyerek belirli işlemleri otomatik olarak çalıştırmanızı sağlar. Bu makalede, Laravel’de Event ve Listener oluşturmayı, nasıl çalıştığını ve kullanım senaryolarını detaylı bir şekilde inceleyeceğiz.
Event (Olay), uygulama içinde bir olay gerçekleştiğinde tetiklenen mekanizmadır. Örneğin, bir kullanıcının kayıt olması, bir siparişin tamamlanması veya bir dosyanın yüklenmesi gibi olaylar birer event olabilir.
Listener (Dinleyici), bir event tetiklendiğinde çalıştırılacak işlemleri içerir. Örneğin, bir kullanıcı kayıt olduğunda hoş geldin e-postası göndermek veya bir sipariş tamamlandığında bildirim göndermek gibi işlemler birer listener olabilir.
Laravel’de Event ve Listener oluşturmak oldukça kolaydır. İşte adım adım kullanım süreci:
Event ve Listener’ları tek bir Artisan komutuyla oluşturabilirsiniz. Örneğin, bir kullanıcı kayıt olduğunda tetiklenecek bir event ve bu event’i dinleyecek bir listener oluşturalım:
php artisan make:event UserRegistered
php artisan make:listener SendWelcomeEmail --event=UserRegistered
Bu komutlar, app/Events/UserRegistered.php
ve app/Listeners/SendWelcomeEmail.php
dosyalarını oluşturur.
Event sınıfı, tetiklendiğinde taşınacak verileri içerir. Örneğin, bir kullanıcı kayıt olduğunda kullanıcı bilgilerini taşıyan bir event oluşturalım:
namespace App\Events;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use App\Models\User;
class UserRegistered
{
use Dispatchable, SerializesModels;
public $user;
public function __construct(User $user)
{
$this->user = $user;
}
}
Bu event, bir kullanıcı kayıt olduğunda tetiklenecek ve $user
bilgilerini taşıyacaktır.
Listener sınıfı, event tetiklendiğinde çalıştırılacak işlemleri içerir. Örneğin, bir kullanıcı kayıt olduğunda hoş geldin e-postası göndermek için:
namespace App\Listeners;
use App\Events\UserRegistered;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Mail;
use App\Mail\WelcomeMail;
class SendWelcomeEmail implements ShouldQueue
{
use InteractsWithQueue;
public function handle(UserRegistered $event)
{
Mail::to($event->user->email)->send(new WelcomeMail($event->user));
}
}
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;
use App\Models\User;
public function register(Request $request)
{
$user = User::create($request->all());
event(new UserRegistered($user)); // Event'i tetikle
return response()->json(['message' => 'Kayıt başarılı!']);
}
Bu sayede, bir kullanıcı kayıt olduğunda UserRegistered
event’i tetiklenecek ve SendWelcomeEmail
listener’ı çalışacaktır.
Laravel, EventServiceProvider.php
dosyasında event’leri ve listener’ları otomatik olarak yönetir. Örneğin, UserRegistered
event’ini ve SendWelcomeEmail
listener’ını kaydedelim:
protected $listen = [
UserRegistered::class => [
SendWelcomeEmail::class,
],
];
Laravel 8 ve sonraki sürümlerde event discovery (otomatik keşif) özelliği olduğu için, elle eklemenize gerek yoktur. Ancak, yeni bir event veya listener oluşturduktan sonra listeyi güncellemek için aşağıdaki komutu kullanabilirsiniz:
php artisan event:cache
Event’leri asenkron (arka plan) olarak çalıştırmak için queue (kuyruk) sistemi kullanabilirsiniz. Listener sınıfında ShouldQueue
kullanıldığı için işlemler otomatik olarak kuyruğa alınır. Kuyruk işçisini çalıştırmak için:
php artisan queue:work
Eğer işlemi hemen çalıştırmak istiyorsanız:
php artisan queue:work --daemon
Laravel, event ve listener’ları yönetmek için birçok komut sunar. İşte en yaygın kullanılan komutlardan bazıları:
php artisan event:list
php artisan event:dispatch App\Events\UserRegistered
Eğer event keşif sistemini kapatıp elle tanımlamak istiyorsanız, EventServiceProvider.php
dosyasına aşağıdaki satırı ekleyin:
public function shouldDiscoverEvents()
{
return false;
}
Laravel’in Event & Listener yapısı, uygulamanızı daha modüler, esnek ve performanslı hale getirmek için güçlü bir araçtır. Bu makalede, Laravel’de Event ve Listener oluşturmayı, nasıl çalıştığını ve kullanım senaryolarını öğrendiniz.
Eğer Laravel ile web uygulamaları geliştiriyorsanız, Event ve Listener yapısını kullanarak kodunuzu daha düzenli hale getirebilir ve kullanıcı deneyimini artırabilirsiniz. 🚀
Laravel’de Real-Time (Gerçek Zamanlı) Bildirimler Laravel, modern web uygulamalarında gerçek zamanlı bildirimler oluşturmak için güçlü…
Laravel’de Mail Gönderme ve Bildirimler Laravel, modern web uygulamaları geliştirirken e-posta gönderimi ve bildirim sistemleri…
Laravel, dosya yükleme ve depolama işlemleri için güçlü bir Storage (Dosya Depolama) mekanizması sunar. Bu mekanizma, yerel…
Laravel’de Çoklu Dil (Localization) Kullanımı: Uygulamanızı Küresel Hale Getirin 🌍 Laravel, modern web uygulamaları için…
Laravel’de Test Driven Development (TDD) ve Test Yazımı: Güvenilir ve Sürdürülebilir Kod Geliştirme Laravel, modern…
Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi Laravel, modern web uygulamalarında belirli…