Sitemize hoşgeldiniz!  ::  Son eklenen yazı: Git’te “master” mı “main” mi? Bir kelimenin ardındaki hikâye  ::  Toplam 63 yazı  ::  Görüş ve önerileriniz için iletişim sayfasını kullanabilirsiniz.
» Menü
Anasayfa
Hakkımda
İletişim
» Kategoriler
› nostalji (8)
› laravel (7)
› php (5)
› web (3)
› agile (3)
› go (2)
› golang (2)
› api (2)
› redis (2)
› git (2)
› github (2)
› model (1)
» Arşiv
› Ekim 2025 (2)
› Temmuz 2025 (1)
› Nisan 2025 (3)
› Mart 2025 (5)
› Şubat 2025 (1)
› Ocak 2025 (43)
› Haziran 2011 (1)
› Kasım 2009 (1)
› Temmuz 2009 (1)
› Temmuz 2007 (1)
› Ocak 2007 (1)
› Kasım 2006 (1)
› Ekim 2006 (1)
› Ağustos 2006 (1)
Anasayfa » Yazılar » Laravel Event ve Listener Nedir?
Laravel Event ve Listener Nedir?
Yazan: Atilla Mutlu | Tarih: 14.01.2025 07:29 | Kategori: laravel, event, listener

Laravel, uygulamanızdaki belirli işlemlere veya olaylara (event) tepki verebilmek için Event-Listener mimarisini kullanır. Bu yapı, uygulamanın belirli noktalarında tetiklenen olaylara (event) çeşitli işlevler (listener) atayarak çalışır. Böylece, kodunuzu daha modüler ve yönetilebilir hale getirebilirsiniz.

Event ve Listener’ın Amaçları:

  • Gevşek Bağlılık (Loose Coupling): Kod parçalarını birbiriyle daha az bağımlı hale getirir.
  • Modülerlik: Bir işlemin birden fazla sonucu olduğunda, her bir sonucu ayrı listener olarak tanımlayabilirsiniz.
  • Kolay Yönetim: Olayları dinlemek ve gerektiğinde farklı işlevler eklemek çok daha kolaydır.

Event ve Listener Nasıl Çalışır?

  • Event: Uygulamada meydana gelen bir olayı temsil eder. Örneğin, bir kullanıcı kayıt olduğunda bir UserRegistered event tetiklenebilir.
  • Listener: Event tetiklendiğinde bu olaya tepki veren bir işlemi tanımlar.

Event ve Listener Oluşturma

Laravel, php artisan komutlarını kullanarak kolayca event ve listener oluşturmanıza olanak sağlar.

Adım 1: Event ve Listener Oluşturma

php artisan make:event UserRegistered
php artisan make:listener SendWelcomeEmail --event=UserRegistered
  • UserRegistered: Yeni bir event sınıfı oluşturur.
  • SendWelcomeEmail: UserRegistered olayını dinleyen bir listener oluşturur.

Adım 2: Event Sınıfını Düzenleme

app/Events/UserRegistered.php dosyası şu şekilde olabilir:

<?php

namespace App\Events;

use App\Models\User;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class UserRegistered
{
    use Dispatchable, SerializesModels;

    public $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }
}

Bu event, bir kullanıcı nesnesini (User) içerir ve tetiklendiğinde dinleyicilere bu kullanıcı bilgisini iletir.


Adım 3: Listener Sınıfını Düzenleme

app/Listeners/SendWelcomeEmail.php dosyası şu şekilde olabilir:

<?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 __construct()
    {
        // Gerekirse bağımlılıkları burada tanımlayabilirsiniz.
    }

    public function handle(UserRegistered $event)
    {
        $user = $event->user;

        // Kullanıcıya hoş geldiniz e-postası gönderme işlemi
        Mail::to($user->email)->send(new \App\Mail\WelcomeMail($user));
    }
}

Adım 4: Event-Listener İlişkisi Tanımlama

EventServiceProvider dosyasında bu ilişkiyi tanımlamalısınız:
app/Providers/EventServiceProvider.php

protected $listen = [
    \App\Events\UserRegistered::class => [
        \App\Listeners\SendWelcomeEmail::class,
    ],
];

Adım 5: Event’i Tetikleme

Bir kullanıcı kayıt olduğunda bu olayı tetiklemek için şu şekilde bir çağrı yapabilirsiniz:

use App\Events\UserRegistered;

// Örnek bir kullanıcı kaydı
$user = User::create([
    'name' => 'Atilla',
    'email' => 'atilla@example.com',
    'password' => bcrypt('password'),
]);

// Event'i tetikle
event(new UserRegistered($user));

Basit Örnek: Log Mesajı Yazdırma

Bir event tetiklendiğinde log dosyasına bir mesaj yazdırmak isterseniz:

Listener

app/Listeners/LogUserRegistered.php

<?php

namespace App\Listeners;

use App\Events\UserRegistered;
use Illuminate\Support\Facades\Log;

class LogUserRegistered
{
    public function handle(UserRegistered $event)
    {
        Log::info('Yeni bir kullanıcı kayıt oldu: ' . $event->user->email);
    }
}

EventServiceProvider’a Ekleyin

protected $listen = [
    \App\Events\UserRegistered::class => [
        \App\Listeners\SendWelcomeEmail::class,
        \App\Listeners\LogUserRegistered::class,
    ],
];

Bu sayede, UserRegistered tetiklendiğinde hem e-posta gönderilir hem de log dosyasına mesaj yazılır.


Queue Kullanımı

Eğer bir listener işlemini sıraya (queue) almak isterseniz, listener sınıfınıza ShouldQueue arayüzünü ekleyin:

use Illuminate\Contracts\Queue\ShouldQueue;

class SendWelcomeEmail implements ShouldQueue
{
    // Queue işlemleri otomatik olarak burada çalışır.
}

Özet

Laravel Event-Listener yapısı, olay bazlı iş akışlarını yönetmek için güçlü bir araçtır. Olayların gevşek bağlılıkla yönetilmesi, kodun okunabilirliğini artırır ve ölçeklenebilirliği kolaylaştırır. Event ve listener’ları düzenli bir şekilde kullanarak uygulamanızı daha modüler ve işlevsel hale getirebilirsiniz.

« Geri dön | Yorum gönder | Yukarı ↑
» Hakkımda
A
Atilla Mutlu
Yazılım Geliştirici

Devamını oku »
» Son Yazılar
› Git’te “master” mı “main” mi? Bir kelimenin ardındaki hikâye
› Laravel Model Controller
› PostgreSQL Mini‑Kılavuz
› ReactJS Rehberi
› Spatie Laravel Paketleri
» İstatistik
Ziyaretçi Sayısı
036384
Toplam yazı: 63
PHPpowered SQLiteinside Firefoxile daha iyi CSStables ♥
Bu site en iyi 1024x768 çözünürlükte görüntülenir.
Copyright © 2006-2026
Anasayfa | Hakkımda | İletişim | Yukarı ↑
Bu sayfa 0,023 saniyede oluşturuldu.