kanelllo / php-events
简单的事件管理器
2.0.0
2016-02-11 21:26 UTC
Requires
- php: >=5.3
Requires (Dev)
- phpunit/phpunit: 3.*
This package is not auto-updated.
Last update: 2024-09-14 19:03:59 UTC
README
一个单实例事件管理器,使用简单的 PHP 函数实现。它允许您将监听器附加和解除附加到命名事件,触发事件以及中断监听器的执行。
要求
- php >= 5.3
安装
$ composer require kanellov/php-events
基本功能
- 为每个事件设置监听器的优先级。 附加监听器时,您可以通过指定整数作为最后一个参数来设置优先级。具有更高优先级值的监听器将首先触发。
- 在触发事件时收集监听器的结果。 触发时收集每个监听器的返回值,并按监听器的顺序返回一个数组。
- 停止事件传播。 事件可以在任何时间由监听器停止。每个监听器都接收一个可调用的参数作为最后一个参数,该参数可以防止触发后续的监听器。在触发结果中包含
stopped
标志。 - 通配符事件。 您可以使用通配符事件
*
将其附加到所有事件。如果指定了优先级,则将用于触发任何事件的此监听器。
用法
附加监听器
\Knlv\events('on', string $event_name, callable $listener[, int $priority]);
为事件$event_name
注册$listener
\Knlv\events('on', '*', callable $listener[, int priority])
为所有事件注册$listener
注意: 所有监听器都接收一个额外的最后一个参数。它是一个可调用的函数,如果调用它,将停止事件传播。
触发事件
\Knlv\events('trigger', string $event_name [, mixed $...]);
触发事件$event_name
并将参数传递给监听器。
解除监听器
\Knlv\events('off');
解除所有监听器\Knlv\events('off', $event_name)
解除事件$event_name
的所有监听器\Knlv\events('off', $event_name, $listener)
解除事件$event_name
的特定$listener
示例
附加监听器并触发事件
\Knlv\events('on', 'event_name', function ($value) { return strtolower($value); }); \Knlv\events('on', 'event_name', function ($value) { return strtoupper($value); }); $result = \Knlv\events('trigger', 'event_name', 'TEST'); var_dump($result); /* array(2) { 'stopped' => bool(false) 'results' => array(2) { [0] => string(4) "test" [1] => string(4) "TEST" } } */
指定优先级
\Knlv\events('on', 'event_name', function ($value) { return strtolower($value); }); \Knlv\events('on', 'event_name', function ($value) { return strtoupper($value); }, 10); $result = \Knlv\events('trigger', 'event_name', 'TEST'); var_dump($result); /* array(2) { 'stopped' => bool(false) 'results' => array(2) { [0] => string(4) "TEST" [1] => string(4) "test" } } */
停止事件传播
\Knlv\events('on', 'event_name', function ($value, $stop) { $stop(); return strtolower($value); }); \Knlv\events('on', 'event_name', function ($value) { return strtoupper($value); }); $result = \Knlv\events('trigger', 'event_name', 'TEST'); var_dump($result); /* array(2) { 'stopped' => bool(true) 'results' => array(1) { [0] => string(4) "test" } } */
许可证
php-events 在 GNU 通用公共许可证版本 3 下授权。有关更多信息,请参阅许可证文件。