xobotyi / emittr
为您的应用提供事件库
v2.0.2
2018-06-29 20:10 UTC
Requires
- php: >=7.1
Requires (Dev)
- codacy/coverage: ^1.4.0
- phpunit/phpunit: ^6.5.3
This package is auto-updated.
Last update: 2022-07-21 20:42:46 UTC
README
关于
emittr 是一个小型无依赖库,为您的应用提供事件功能。它不会引入异步执行,但会以最佳方式分离您的代码。
emittr 的主要功能是全局发射器,您可以使用它来分配事件回调,即使类还没有被自动加载。
库使用 PSR-4 自动加载标准,并且始终有 100% 的测试覆盖率。
为什么选择 emittr
- 它有良好的文档
- 我自己在享用甜点=)
- 即使类尚未被自动加载或声明,也可以分配事件回调
- 能够停止事件传播
- 事件发射器的静态和非静态版本
Emittr 的关键功能是 GlobalEventHandler,允许您分配事件监听器,即使事件发射器或其监听器尚未声明。
在生命周期中,事件首先通过其发射器上分配的所有监听器传播,然后通过全局处理程序上的监听器传播,除非任何监听器阻止了事件传播。
要求
- PHP 7.1+
安装
使用 composer 安装
composer require xobotyi/emittr
用法
use xobotyi\emittr; class AwesomeClass extends emittr\EventEmitter { } $awesomeObject = new AwesomeClass(); $awesomeObject ->once('testEvent', function (emittr\Event $e) { echo $e->getPayload()['message'] . PHP_EOL; $e->stopPropagation(); }) ->once('testEvent', function () { echo "emittr is awful!" . PHP_EOL; }); $awesomeObject->emit('testEvent', ['message' => "eittr is awesome!"]);
或者您可以使用全局发射器来分配处理程序
use xobotyi\emittr; // note that neiter MostAwesomeClass class nor awesomeCallback function was not defined yet! emittr\GlobalEventHandler::getInstance() ->once("MostAwesomeClass", 'testEvent', 'awesomeCallback') ->once("MostAwesomeClass", 'testEvent', 'nonAwesomeCallback'); class MostAwesomeClass { use emittr\Traits\EventEmitterStatic; } function awesomeCallback(emittr\Event $e) { echo $e->getPayload()['message'] . PHP_EOL; $e->stopPropagation(); } function nonAwesomeCallback() { echo "emittr is awful!" . PHP_EOL; } MostAwesomeClass::emit('testEvent', ['message' => "eittr is awesome!"]);
索引
class \xobotyi\emittr\Event
- function stopPropagation() :self;
- function startPropagation() :self;
- function isPropagatable() :bool;
- function getEventName() :string;
- function getPayload() :mixed;
- function getSourceObject() :mixed;
- function getSourceClass() :?string
class \xobotyi\emittr\EventEmitter
- function emit($event, $payload = null) :self;
- function on(string $eventName, $callback) :self;
- function once(string $eventName, $callback) :self;
- function prependListener(string $eventName, $callback) :self;
- function prependOnceListener(string $eventName, $callback) :self;
- function off(string $eventName, $callback) :self;
- function removeAllListeners(?string $eventName = null) :self;
- function getEventNames() :array;
- function getListeners(?string $eventName = null) :array;
- function getMaxListenersCount() :int;
- function setMaxListenersCount(int $maxListenersCount) :self;
- function getGlobalEmitter() :Interfaces\GlobalEventHandler;
- function setGlobalEmitter(Interfaces\GlobalEventHandler $emitterGlobal) :self;
trait \xobotyi\emittr\Traits\EventEmitterStatic
- static function getEventEmitter() :EventEmitter;
- static function setEventEmitter(EventEmitter $eventEmitter) :EventEmitter;
- static function emit(string $eventName, $payload = null) :void;
- 静态函数 on(string $eventName, $callback) :void;
- 静态函数 once(string $eventName, $callback) :void;
- 静态函数 prependListener(string $eventName, $callback) :void;
- 静态函数 prependOnceListener(string $eventName, $callback) :void;
- 静态函数 off(string $eventName, $callback);
- 静态函数 removeAllListeners(?string $eventName = null) :void;
- 静态函数 getListeners(?string $eventName = null) :array;
- 静态函数 getMaxListenersCount() :int;
- 静态函数 setMaxListenersCount(int $maxListenersCount) :void;
- 静态函数 getGlobalEmitter() :GlobalEventHandler;
- 静态函数 setGlobalEmitter(GlobalEventHandler $emitterGlobal) :void;
class \xobotyi\emittr\GlobalEventHandler
- 静态函数 getInstance() :self;
- 静态函数 propagateEvent(Event $event, array &$eventsListeners) :bool;
- 静态函数 isValidCallback($callback) :bool;
- 静态函数 storeCallback(array &$arrayToStore, string $eventName, $callback, int $maxListeners = 10, bool $once = false, bool $prepend = false) :void;
- 函数 loadListeners(array $listeners) :self;
- 函数 on(string $className, string $eventName, $callback) :self;
- 函数 once(string $className, string $eventName, $callback) :self;
- 函数 prependListener(string $className, string $eventName, $callback) :self;
- 函数 prependOnceListener(string $className, string $eventName, $callback) :self;
- 函数 off(string $className, string $eventName, $callback) :self;
- 函数 removeAllListeners(?string $className = null, ?string $eventName = null) :self;
- 函数 getEventNames(string $className) :array;
- 函数 getListeners(?string $className = null, ?string $eventName = null) :array;
- function getMaxListenersCount() :int;
- function setMaxListenersCount(int $maxListenersCount) :self;
- 函数 propagateEventGlobal(Event $event) :bool;