0Pricing
PHP Academy · Pelajaran

EventDispatcher: Event yang Terpisah

Kirim dan dengarkan event menggunakan EventDispatcher Symfony.

EventDispatcher: Event yang Terpisah adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.

Apa itu EventDispatcher?

Symfony EventDispatcher mengimplementasikan pola Pengamat. Kode mengirimkan peristiwa; para pendengar meresponsnya — tanpa distributor mengetahui apa pun tentang para pendengar tersebut.

Memasang

Pasang komponen tersebut.

$ composer require symfony/event-dispatcher

Membuat Peristiwa

Peristiwa adalah kelas PHP biasa, yang sering kali memperluas Event (opsional) dan membawa data.

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

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

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

Membuat Pendengar

Pendengar adalah callable atau objek yang merespons peristiwa tertentu.

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

Mendaftarkan Pendengar

Hubungkan pendengar ke distributor.

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

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

Mengirimkan Peristiwa

Kirimkan peristiwa — semua pendengar yang terdaftar dipanggil berdasarkan urutan prioritas.

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

Prioritas Pendengar

Teruskan bilangan bulat prioritas sebagai argumen ketiga ke addListener(). Angka yang lebih tinggi dijalankan terlebih dahulu (default: 0).

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

Pelanggan Peristiwa

Pelanggan peristiwa adalah kelas yang mendaftarkan pendengarnya sendiri dengan mengimplementasikan EventSubscriberInterface.

<?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 {
        // ...
    }
}

Menghentikan Penyebaran

Panggil $event->stopPropagation() di dalam pendengar untuk mencegah pendengar berikutnya berjalan.

Di Laravel

Laravel memiliki sistem peristiwanya sendiri. Kirimkan dengan event(new UserRegistered($user)). Daftarkan pendengar di EventServiceProvider atau gunakan atribut #[Listen].

Manfaat Arsitektur Berbasis Peristiwa

Peristiwa memisahkan komponen: layanan pendaftaran tidak mengimpor layanan surel. Perilaku baru (pencatatan, analitik) dapat ditambahkan dengan mendaftarkan pendengar baru tanpa mengubah kode yang sudah ada.

Ringkasan

Buat kelas peristiwa dengan data, hubungkan pendengar dengan addListener(), dan kirimkan dengan $dispatcher->dispatch(). Gunakan pelanggan untuk kelompok pendengar yang mendaftarkan dirinya sendiri.

Pemeriksaan Singkat

Bagaimana cara menghentikan pendengar berikutnya agar tidak berjalan?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “EventDispatcher: Event yang Terpisah” gratis?

Ya — teks lengkap “EventDispatcher: Event yang Terpisah” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “EventDispatcher: Event yang Terpisah”?

Kirim dan dengarkan event menggunakan EventDispatcher Symfony. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai PHP Academy?

Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “EventDispatcher: Event yang Terpisah” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. HttpFoundation: Request dan Response
  2. Kontainer DependencyInjection
  3. EventDispatcher: Event yang Terpisah
  4. Komponen Konsol: Perintah CLI
← Kembali ke PHP Academy