gianarb / fast-event-manager
此包已被弃用且不再维护。未建议替代包。
快速事件管理器,简单且基于正则表达式
0.1.0
2015-11-09 14:39 UTC
Requires
- php: >=5.6
Requires (Dev)
This package is not auto-updated.
Last update: 2020-08-21 20:13:05 UTC
README
基于正则表达式的PHP事件管理器。触发事件并附加监听器,核心功能易于理解且易于扩展。
安装
$ composer install gianarb/fast-event-manager
使用方法
入门
这是基本用法
<?php use FastEventManager\EventManager; $eventManager = new EventManager(); $eventManager->attach("post-save", function ($assertArg) { // DO STUFF }); $assert = false; $eventManager->trigger("/post-save/", $assert);
优先级
FastEventManager支持具有优先级的监听器
$eventManager = new EventManager(); $eventManager->attach("post-save", function ($assertArg) { echo "Hi"; }, 100); $eventManager->attach("post-save", function ($assertArg) { echo " dev!"; }, 10); $eventManager->trigger("/post-save/"); // output "Hi dev!"
正则表达式
FastEventManager解析正则表达式,您可以触发更多事件。
$eventManager = new EventManager(); $eventManager->attach("post-save", function ($assertArg) { echo "Hi"; }); $eventManager->attach("pload", function ($assertArg) { echo " none!"; }); $eventManager->attach("post-load", function ($assertArg) { echo " dev!"; }); $eventManager->trigger("/post-(save|load)/i", $assert); // output "Hi dev!"
阻止传播
目前我们决定不在FastEventManager的核心中支持此功能,因为有许多关于此功能的实现。以下是一个示例
$eventManager = new EventManager(); $count = 0; $eventManager->attach("post", function () use (&$count) { $count++; }, 100); $eventManager->attach("post", function () use (&$count) { throw new \Exception(); }, 110); $eventManager->attach("post", function () use (&$count) { $count++; }, 120); try { $eventManager->trigger("/post/"); } catch (\Exception $exc) { // STOP! }