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! 😊🚀

Exit mobile version