Laravel’de Event ve Listener Kullanımı

Laravel, geliştiricilere olay tabanlı (event-driven) programlama yaklaşımını kullanarak uygulamalarda olayları yönetme imkanı sunar. Olayları başlatmak ve işlemek için “Event” ve “Listener” kullanabilirsiniz. Bu makalede, Laravel’de Event ve Listener’ları nasıl kullanacağınızı öğreneceğiz.
Event Nedir?
Bir “event” (olay), uygulamanızda gerçekleşen bir eylemi veya durumu temsil eder. Örneğin, bir kullanıcı hesap oluşturduğunda veya bir mesaj gönderildiğinde bir olay tetiklenebilir. Laravel’de, olayları temsil etmek için Illuminate\Events\Dispatcher
sınıfını kullanırız.
Event Oluşturma
Laravel’de bir olay oluşturmak için event:generate
komutunu kullanabiliriz. Örnek olarak, UserRegistered
adında bir olay oluşturalım:
php artisan event:generate
Bu komut, app/Events
dizininde UserRegistered
adında bir olay sınıfı oluşturacak.
Oluşturulan olay sınıfına, tetiklenmesini istediğiniz verileri ekleyebilirsiniz. Örneğin, kullanıcı adını veya e-posta adresini içerebilir.
namespace App\Events;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class UserRegistered
{
use Dispatchable, SerializesModels;
public $username;
public $email;
public function __construct($username, $email)
{
$this->username = $username;
$this->email = $email;
}
}
Yukarıdaki örnekte, UserRegistered
sınıfı, kullanıcı adını ve e-posta adresini depolayan iki public değişken içerir. Olayı tetiklemek için bu verileri kullanacağız.
Event Tetikleme
Olayları tetiklemek için event
yöntemini kullanırız. Olayın adını ve ilgili verileri parametre olarak geçiririz. Örnek olarak, kullanıcı kaydı tamamlandığında UserRegistered
olayını tetikleyelim:
use App\Events\UserRegistered;
event(new UserRegistered($user->name, $user->email));
Yukarıdaki örnekte, $user
değişkeni yeni kaydedilen kullanıcıyı temsil eder. UserRegistered
olayını tetiklemek için $user
‘ın adını ve e-posta adresini kullanıyoruz.
Listener Nedir?
Bir “listener” (dinleyici), tetiklenen bir olaya tepki olarak gerçekleştirilecek işlevleri temsil eder. Laravel’de, dinleyicileri Illuminate\Contracts\Events\Dispatcher
sınıfıyla ilişkilendiririz.
Listener Oluşturma
Laravel’de bir dinleyici oluşturmak oldukça basittir. Dinleyici sınıfınızı app/Listeners
dizinine ekleyebilirsiniz. Örneğin, SendWelcomeEmail
adında bir dinleyici oluşturalım:
php artisan make:listener SendWelcomeEmail --event=UserRegistered
Bu komut, app/Listeners
dizininde SendWelcomeEmail
adında bir dinleyici sınıfı oluşturacak. --event
parametresiyle, dinleyicinin hangi olaya tepki vereceğini belirtiyoruz. Yukarıdaki örnekte, UserRegistered
olayına tepki olarak SendWelcomeEmail
dinleyicisi oluşturuldu.
Listener İçeriği
Oluşturulan dinleyici sınıfının handle
yöntemini düzenleyerek tepki verilecek işlevleri tanımlarız. Örneğin, SendWelcomeEmail
dinleyicisi, yeni kaydedilen kullanıcıya hoş geldin e-postası göndermek için aşağıdaki gibi düzenlenebilir:
namespace App\Listeners;
use App\Events\UserRegistered;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
class SendWelcomeEmail implements ShouldQueue
{
use InteractsWithQueue;
public function handle(UserRegistered $event)
{
$username = $event->username;
$email = $event->email;
// Hoş geldin e-postası gönderme işlemleri burada gerçekleştirilir
// Örneğin: Mail::to($email)->send(new WelcomeEmail($username));
}
}
Yukarıdaki örnekte, handle
yöntemi, UserRegistered
olayının tetiklendiği zaman çalıştırılacak kodu içerir. Olay sınıfından gelen kullanıcı adı ve e-posta adresini alır ve hoş geldin e-postasını gönderme işlemlerini gerçekleştirir.
Dinleyici sınıfınızı oluşturduktan sonra, Laravel’e dinleyiciyi kaydetmeniz gerekmektedir.
Listener’ı Kaydetme
Listener’ı kaydetmek için EventServiceProvider
sınıfını kullanırız. Bu sınıf, uygulamanızdaki tüm olaylarla ilgili ayarları içerir. EventServiceProvider
sınıfında listen
özelliğini düzenleyerek dinleyicileri tanımlarız.
Örnek olarak, EventServiceProvider
sınıfında UserRegistered
olayını ve SendWelcomeEmail
dinleyicisini tanımlayalım:
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
protected $listen = [
UserRegistered::class => [
SendWelcomeEmail::class,
],
];
// ...
}
Yukarıdaki örnekte, $listen
özelliği, UserRegistered
olayının tetiklenmesi durumunda SendWelcomeEmail
dinleyicisinin çalıştırılacağını belirtir.
Bu adımları takip ettiğinizde, Laravel’de Event ve Listener kullanımını kolayca gerçekleştire
bilirsiniz. Event ve Listener kullanarak uygulamanızda olayları kolayca yönetebilir, işlemleri uygun şekilde düzenleyebilir ve kodunuzu daha modüler hale getirebilirsiniz.
Bu makalede, Laravel’de Event ve Listener kullanımını detaylı bir şekilde ele aldık. Olayları nasıl oluşturacağınızı, tetikleyeceğinizi ve dinleyicileri nasıl oluşturup kaydedeceğinizi öğrendiniz. Artık Laravel’de olayları kullanarak uygulamanızı daha güçlü ve esnek hale getirebilirsiniz.
Keyifli kodlamalar! 😊🚀