pleets / php-event-dispatcher
PSR-14 事件调度器
v1.0.0
2020-07-28 03:43 UTC
Requires
- php: 7.4.*
- psr/event-dispatcher: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- phpunit/phpunit: ^9.2
This package is auto-updated.
Last update: 2024-09-08 05:06:58 UTC
README
事件调度是一种常见且经过良好测试的机制,允许开发者轻松且一致地将逻辑注入应用程序。此库是根据PSR-14开发的,并在psr/event-dispatcher中实现了所有接口。
您可以按照以下方式下载此项目。
git clone git@github.com:pleets/php-event-dispatcher.git
使用方法
创建事件
事件是由发射器产生的消息。它可以是任何任意的PHP对象。您可以通过扩展Event
类来创建事件。
use Pleets\EventDispatcher\Event; class DepositEvent extends Event { public string $text; protected string $amount; private string $currency = 'USD'; public function __construct($amount) { $this->amount = $amount; $this->text = 'We are preparing your deposit: '.$this->amount.$this->currency; } }
创建监听器
监听器是任何期望传入事件的PHP可调用对象。零个或多个监听器可以传递相同的事件。监听器可以选择将其他异步行为入队。您可以通过扩展Listener
类来创建监听器。
use Pleets\EventDispatcher\Event; use Pleets\EventDispatcher\Listener; class SendDepositNotification extends Listener { public function handle(Event $event): void { $event->text = 'Your deposit was done!'; } }
创建监听器提供者和订阅事件
监听器提供者负责确定对于给定事件哪些监听器是相关的,但必须不调用监听器本身。监听器提供者可以指定零个或多个相关的监听器。您可以通过以下方式创建监听器提供者。
$provider = new ListenerProvider(); $deposit = new DepositEvent('127.00'); $provider->subscribe($deposit, new SendDepositNotification());
调度您的事件
调度器是一个服务对象,由发射器提供事件对象。调度器负责确保事件被传递给所有相关的监听器,但必须将负责监听器的确定推迟给监听器提供者。您可以通过以下方式调度您的事件。
$dispatcher = new Dispatcher($provider); $dispatcher->dispatch($deposit);
所有监听器都将被通知此事件,并将执行。