PHP Academy · Ders

EventDispatcher: Gevşek Bağlı Olaylar

Symfony'nin EventDispatcher'ını kullanarak olayları dağıtın ve dinleyin.

3. ders / 413 adım

EventDispatcher: Gevşek Bağlı Olaylar, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, PHP Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. PHP Academy kursu toplamda 4 dersten oluşur.

EventDispatcher Nedir?

Symfony EventDispatcher, Observer tasarım kalıbını uygular. Kod olayları gönderir; dinleyiciler bunlara tepki verir ve dağıtıcı dinleyiciler hakkında herhangi bir bilgiye ihtiyaç duymaz.

Kurulum

Bileşeni kurun.

$ composer require symfony/event-dispatcher

Olay Oluşturma

Olay, genellikle isteğe bağlı olarak Event sınıfını genişleten ve veri taşıyan sıradan bir PHP sınıfıdır.

<?php
use Symfony\Contracts\EventDispatcher\Event;

class UserRegisteredEvent extends Event
{
    public const NAME = "user.registered";

    public function __construct(public readonly User $user) {}
}

Dinleyici Oluşturma

Dinleyici, belirli bir olaya tepki veren çağrılabilir bir işlev veya nesnedir.

<?php
class SendWelcomeEmailListener
{
    public function __invoke(UserRegisteredEvent $event): void
    {
        mail($event->user->email, "Welcome!", "Thanks for joining!");
    }
}

Dinleyicileri Kaydetme

Dinleyicileri dağıtıcıya ekleyin.

<?php
use Symfony\Component\EventDispatcher\EventDispatcher;

$dispatcher = new EventDispatcher();
$dispatcher->addListener(
    UserRegisteredEvent::NAME,
    new SendWelcomeEmailListener()
);

Olay Gönderme

Olayı gönderin; kayıtlı tüm dinleyiciler öncelik sırasına göre çağrılır.

<?php
$user = new User("alice@example.com");
$dispatcher->dispatch(new UserRegisteredEvent($user), UserRegisteredEvent::NAME);

Dinleyici Önceliği

addListener() yönteminin üçüncü bağımsız değişkeni olarak bir öncelik tamsayısı aktarın. Daha yüksek sayılar önce çalışır (varsayılan: 0).

<?php
$dispatcher->addListener("user.registered", $logListener, 10);   // runs first
$dispatcher->addListener("user.registered", $emailListener, 0);  // runs second

Olay Aboneleri

Olay abonesi, EventSubscriberInterface uygulayarak kendi dinleyicilerini kaydeden bir sınıftır.

<?php
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class UserSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents(): array {
        return [
            UserRegisteredEvent::NAME => "onUserRegistered",
        ];
    }

    public function onUserRegistered(UserRegisteredEvent $event): void {
        // ...
    }
}

Yayılımı Durdurma

Sonraki dinleyicilerin çalışmasını engellemek için bir dinleyicinin içinde $event->stopPropagation() çağrısını yapın.

Laravel'de

Laravel'in kendi olay sistemi vardır. event(new UserRegistered($user)) ile gönderim yapın. Dinleyicileri EventServiceProvider içinde kaydedin veya #[Listen] özniteliğini kullanın.

Olay Odaklı Mimarinin Faydaları

Olaylar bileşenlerin bağımlılığını azaltır: kayıt hizmeti, e-posta hizmetini içe aktarmak zorunda kalmaz. Yeni dinleyiciler kaydederek mevcut kodu değiştirmeden yeni davranışlar (günlük kaydı, analiz) ekleyebilirsiniz.

Özet

Veri içeren olay sınıfları oluşturun, addListener() ile dinleyiciler ekleyin ve $dispatcher->dispatch() ile gönderim yapın. Kendi kendini kaydeden dinleyici grupları için aboneleri kullanın.

Hızlı Kontrol

Sonraki dinleyicilerin çalışmasını nasıl durdurursunuz?

Başlamak ücretsiz

Yapay zeka eğitmeniyle PHP öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
49
Dersler
195

Sıkça Sorulan Sorular

“EventDispatcher: Gevşek Bağlı Olaylar” dersi ücretsiz mi?

Evet — “EventDispatcher: Gevşek Bağlı Olaylar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve PHP Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. PHP Academy kursu toplamda 4 dersten oluşur.

“EventDispatcher: Gevşek Bağlı Olaylar” dersinde ne öğreneceğim?

Symfony'nin EventDispatcher'ını kullanarak olayları dağıtın ve dinleyin. PHP Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

PHP Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te PHP Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“EventDispatcher: Gevşek Bağlı Olaylar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu PHP Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her PHP Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. HttpFoundation: İstek ve Yanıt
  2. DependencyInjection Container
  3. EventDispatcher: Gevşek Bağlı Olaylar
  4. Console Bileşeni: CLI Komutları
← PHP Academy Sayfasına Dön