kanelllo/php-events

简单的事件管理器

2.0.0 2016-02-11 21:26 UTC

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 下授权。有关更多信息,请参阅许可证文件