Rumah >pembangunan bahagian belakang >tutorial php >Cara Menggunakan Pengirim Acara Symfony untuk PHP
Memahami Dispatcher Acara Symfony
Pengirim acara Symfony mencerminkan corak pemerhati, yang membolehkan pendengar bertindak balas terhadap peristiwa. Ia terdiri daripada tiga elemen utama: peristiwa, pendengar, dan penghantar itu sendiri. Pengirim mencetuskan peristiwa dan melaksanakan pendengar yang berkaitan.Bayangkan perlu memberitahu komponen lain apabila cache dibersihkan. Anda menentukan acara "Cache Dibersihkan". Selepas membersihkan cache, pengirim menimbulkan peristiwa ini, mencetuskan mana-mana pendengar berdaftar untuk melakukan pembersihan cache khusus komponen.
tutorial ini merangkumi asas -asas, bermula dengan pemasangan dan konfigurasi, dan memberikan contoh praktikal.
Pemasangan dan Konfigurasi
Mengandaikan komposer dipasang, gunakan arahan ini:
composer require symfony/event-dispatcherIni menghasilkan atau mengemas kini
, yang sepatutnya menyerupai: composer.json
{ "require": { "symfony/event-dispatcher": "^5.4" } }Tingkatkan
dengan autoloading: composer.json
{ "require": { "symfony/event-dispatcher": "^5.4" }, "autoload": { "psr-4": { "EventDispatchers\": "src" }, "classmap": ["src"] } }Kemas kini Autoloader:
composer dump -oSekarang, kelas EventDispatcher sudah siap untuk digunakan. Kami akan membuat kelas acara dan pendengar, kemudian sambungkannya.
Contoh: basic_example.php
: basic_example.php
<?php // basic_example.php require_once './vendor/autoload.php'; use Symfony\Component\EventDispatcher\EventDispatcher; use EventDispatchers\Events\DemoEvent; use EventDispatchers\Listeners\DemoListener; // Initialize event dispatcher $dispatcher = new EventDispatcher(); // Register listener for 'demo.event' $listener = new DemoListener(); $dispatcher->addListener('demo.event', [$listener, 'onDemoEvent']); // Dispatch the event $dispatcher->dispatch(new DemoEvent(), DemoEvent::NAME);Kaedah
menghentikan penyebaran acara. Pemeriksaan kaedah stopPropagation()
jika penyebaran telah dihentikan. isPropagationStopped()
menggunakan penutupan PHP sebagai pendengar
bukannya objek, penutupan PHP boleh berfungsi sebagai pendengar:
<?php require_once './vendor/autoload.php'; use Symfony\Component\EventDispatcher\EventDispatcher; use EventDispatchers\Events\DemoEvent; // Initialize event dispatcher $dispatcher = new EventDispatcher(); // Register closure listener for 'demo.event' $dispatcher->addListener('demo.event', function (DemoEvent $event) { echo "DemoListener is called!\n"; echo "The value of the foo is: " . $event->getFoo() . "\n"; }); // Dispatch the event $dispatcher->dispatch(new DemoEvent(), 'demo.event');kaedah
kini menggunakan penutupan sebagai hujah kedua. addListener
Kesimpulan
Dispatcher acara Symfony memudahkan pengaturcaraan yang didorong oleh peristiwa di PHP, mewujudkan aplikasi yang mudah digabungkan dan mudah dipelihara. Ini membolehkan komponen berkomunikasi dengan berkesan tanpa kebergantungan langsung.Atas ialah kandungan terperinci Cara Menggunakan Pengirim Acara Symfony untuk PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!