berlioz / event-manager
PHP事件管理器/分发器,遵循PSR-14(事件分发器)标准。
v1.0.0
2021-09-08 20:46 UTC
This package is auto-updated.
Last update: 2024-09-09 03:38:27 UTC
README
伯利兹事件管理器是一个PHP事件管理器/分发器,遵循PSR-14(事件分发器)标准。
更多信息,以及伯利兹框架的使用,请访问网站和在线文档:https://getberlioz.com
安装
Composer
您可以使用Composer安装伯利兹事件管理器,这是推荐的安装方法。
$ composer require berlioz/event-manager
依赖项
- PHP ^8.0
- 包
- psr/event-dispatcher
用法
分发器
初始化事件分发器
use Berlioz\EventManager\EventDispatcher; $dispatcher = new EventDispatcher();
监听事件
use Berlioz\EventManager\EventDispatcher; $callback = function($event) { // Do something return $event; }; /** @var EventDispatcher $dispatcher */ // A named event $dispatcher->addEventListener('event.name', $callback); // Your event object $dispatcher->addEventListener(MyEvent::class, $callback);
分发事件
/** @var EventDispatcher $dispatcher */ use Berlioz\EventManager\Event\CustomEvent; use Berlioz\EventManager\EventDispatcher; // A named event $dispatcher->dispatch(new CustomEvent('event.name')); // Your event object $dispatcher->dispatch(new MyEvent());
优先级
您可以在监听器中定义优先级。最高优先级将在第一次执行中。
use Berlioz\EventManager\Listener\ListenerInterface; /** ... */ // Normal priority (0) $dispatcher->addEventListener('event.name', $callback, ListenerInterface::PRIORITY_NORMAL); // High priority (100) $dispatcher->addEventListener('event.name', $callback, ListenerInterface::PRIORITY_HIGH); // Low priority (-100) $dispatcher->addEventListener('event.name', $callback, ListenerInterface::PRIORITY_LOW);
优先级参数是整数;您可以使用整数值而不是常量来定义优先级。
添加代理分发器
您可以委托分发给另一个遵循PSR-14的分发器。只有当事件未停止时,才会调用委托的分发器。
use Berlioz\EventManager\EventDispatcher; $dispatcher = new EventDispatcher(); $dispatcher->addEventDispatcher(new MyCustomDispatcher());
添加监听器提供者
您可以添加监听器提供者。提供者的调用顺序是添加顺序。
use Berlioz\EventManager\EventDispatcher; $dispatcher = new EventDispatcher(); $dispatcher->addListenerProvider(new MyListenerProvider());
默认监听器
默认监听器是\Berlioz\EventManager\Listener\Listener
。您可以定义自己的默认提供者,他必须实现\Berlioz\EventManager\Listener\ListenerInterface
接口。
向分发器声明此提供者
use Berlioz\EventManager\EventDispatcher; use Berlioz\EventManager\Provider\ListenerProvider;$myDefaultProvider = new ListenerProvider(); $dispatcher = new EventDispatcher(defaultProvider: $myDefaultProvider);