本教程演示了Symfony事件調度程序組件,在PHP應用程序中啟用了事件驅動的體系結構。 這促進了應用程序組件之間的鬆散耦合。
理解Symfony事件調度程序
> Symfony事件調度程序反映了觀察者的模式,使聽眾可以對事件做出反應。 它包括三個關鍵要素:事件,聽眾和調度員本身。調度員觸發事件並執行關聯的偵聽器。
想像需要清除緩存時需要通知其他組件。 您定義了“緩存清除”事件。清除緩存後,調度員提出了此事件,觸發任何註冊的偵聽器執行特定於組件的緩存清除。
本教程涵蓋了基礎知識,從安裝和配置開始,並提供實踐示例。
安裝和配置
假設已安裝了作曲家,請使用此命令:這會生成或更新
composer require symfony/event-dispatcher,應該類似於:
在自動加載的情況下composer.json
增強
{ "require": { "symfony/event-dispatcher": "^5.4" } }>
composer.json
更新自動加載器:
{ "require": { "symfony/event-dispatcher": "^5.4" }, "autoload": { "psr-4": { "EventDispatchers\": "src" }, "classmap": ["src"] } }
>現在,EventDisPatcher類已準備就緒。 我們將創建事件和偵聽器類,然後將它們連接。
>composer dump -o
示例:
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);方法檢查傳播是否已停止。
>
stopPropagation()
>isPropagationStopped()
使用php封閉作為聽眾
> PHP閉合可以用作聽眾:
方法現在使用閉合作為其第二個參數。
<?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');結論
addListener
>
以上是如何將Symfony事件調度程序用於PHP的詳細內容。更多資訊請關注PHP中文網其他相關文章!