brick / event
事件分发库
0.1.1
2019-12-03 11:40 UTC
Requires
- php: >=7.1
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-03 00:02:15 UTC
README
一个简单的事件分发机制。
简介
这个库通过将外部监听器插入到应用程序分发的事件中,帮助编写可扩展的软件。
安装
此库可以通过Composer安装。
composer require brick/event
要求
此库需要PHP 7.1或更高版本。
概述
此包提供了EventDispatcher
。分发器分发事件:事件是一个独特的字符串
,可以带有可选的参数。事件被监听器拦截:任何callable
都可以作为事件监听器。
基本用法
让我们实例化一个分发器
use Brick\Event\EventDispatcher;
$dispatcher = new EventDispatcher();
并添加一些监听器
$dispatcher->addListener('startup', function() {
echo 'Caught startup event';
});
$dispatcher->addListener('shutdown', function() {
echo 'Caught shutdown event';
});
现在,让我们分发一些事件
$dispatcher->dispatch('startup'); // will display "Caught startup event"
$dispatcher->dispatch('shutdown'); // will display "Caught shutdown event"
您传递给dispatch()
的任何附加参数都将转发给监听器
$dispatcher->addListener('test', function($a, $b) {
echo "Caught $a and $b";
});
$dispatcher->dispatch('test', 'Hello', 'World'); // will display "Caught Hello and World"
设置优先级
默认情况下,监听器按注册顺序调用。可以通过传递给addListener()
的优先级来绕过这种自然顺序
$dispatcher->addListener('startup', function() { ... }, 10);
默认优先级是0
。具有最高优先级的监听器将首先在链中调用。具有相同优先级的两个监听器将按注册顺序调用。
停止事件传播
任何监听器都可以决定事件不应传播到链中的其他监听器,通过返回false
$dispatcher->addListener('startup', function() {
// ...
return false;
});
然后分发器将断开链,不会为该事件调用其他监听器。