core-framework/dispatcher

此包已废弃,不再维护。未建议替代包。

CoreFramework 事件调度器组件

v1.0.0 2017-12-05 18:34 UTC

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