pe / component-event
简单的事件分发器
v1.1.0
2023-05-29 08:28 UTC
Requires
- php: ^7.4
Requires (Dev)
- phpunit/phpunit: ^9.3
README
以下版本的PHP受支持。
- PHP 7.4+
安装
要安装,请使用composer
php composer.phar require pe/component-event
用法
最小化用法
namespace PE\Component\Event; // Create emitter instance, maybe in some DI container $emitter = new Emitter(); // Attach listener to some event $emitter->attach('event_name', function ($foo, $bar) { // do something }); // Also you can attach as generic listener for allow stop propagation $emitter->attach('event_name', function (Event $event) { $event->stop();// <-- call for stop propagation }); // Dispatch event somewhere in logic $emitter->dispatch(new Event('event_name', $foo, $bar));
扩展用法
<?php namespace PE\Component\Event; // Create your own event class for store specific payload or modify it in listeners class SomeEvent { public string $message = 'A'; } $emitter = new Emitter(); // Listener A, it's important to first arg be same as event class $emitter->attach(SomeEvent::class, function (SomeEvent $event) { $event->message = 'B'; }); // Listener B $emitter->attach(SomeEvent::class, function (SomeEvent $event) { echo $event->message;// <-- here message is "B" }); $emitter->dispatch(new SomeEvent());
注意:每个监听器可以带有优先级,优先级值越低,监听器越早触发