core-framework / dispatcher
此包已废弃,不再维护。未建议替代包。
CoreFramework 事件调度器组件
v1.0.0
2017-12-05 18:34 UTC
Requires
- php: ^7.1.3
Requires (Dev)
- phpunit/phpunit: ^6.5
This package is not auto-updated.
Last update: 2022-09-30 22:31:38 UTC
README
调度器组件提供了一种方法,允许您的应用程序组件通过使用发布/订阅模型相互通信。
使用方法
1. 基本使用
首先创建一个调度器实例
$dispatcher = new Dispatcher();
然后使用以下语法订阅事件
$dispatcher->on('eventFoo', function() { echo 'foo';});
on()
方法的第二个参数可以是类似 闭包(匿名函数)的 callable
,也可以是 Core\Events\ListenerInterface
的实例。
以下是一个监听器类的示例
class TestEventListener implements ListenerInterface { /** * @var EventInterface */ public $calledEvent; /** * @var string */ public $eventName; /** * @var DispatcherInterface */ public $dispatcher; public function __invoke(EventInterface $event, string $eventName = null, DispatcherInterface $dispatcher = null) { $this->calledEvent = $event; $this->eventName = $eventName; $this->dispatcher = $dispatcher; } }
您定义的 Listener
类必须实现 ListenerInterface
,该接口强制定义 invoke()
方法。
2. 事件订阅者
Dispatcher
类提供了一种添加订阅者的方式,它们可以添加自己的事件监听器集合。您可以使用 addSubscriber()
方法添加订阅者,如下所示
$subscriber = new Subscriber(); $dispatcher->addSubscriber($subscriber);
定义的 Subscriber
类必须实现 SubscriberInterface
。