gianarb/fast-event-manager

此包已被弃用且不再维护。未建议替代包。

快速事件管理器,简单且基于正则表达式

0.1.0 2015-11-09 14:39 UTC

This package is not auto-updated.

Last update: 2020-08-21 20:13:05 UTC


README

Scrutinizer Code Quality Code Coverage Build Status

基于正则表达式的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!
}