pagon/eventemitter

PHP的事件发射器

0.5.2 2013-09-26 03:19 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:27:01 UTC


README

其他语言:英文

介绍 构建状态

简单的事件管理器

安装

"pagon/eventemitter": "*"添加到composer.json

composer.phar install

使用方法

触发和绑定

简单方式

非常简单的使用方式

$event = new EventEmitter();

// 绑定事件
$event->on('new', function () {
    echo 'A new client is coming' . PHP_EOL;
});

// 触发
$event->emit('new');

单次绑定

绑定的事件只会被触发一次,适合第一次做一些事情的时候去使用

$event = new EventEmitter();

// 绑定单次事件
$event->once('new', function () {
    echo 'A new client is coming' . PHP_EOL;
});

// 触发
$event->emit('new');

// 不触发
$event->emit('new');

多次绑定

绑定的事件被触发N次,适合一些有固定用途的事件

$event = new EventEmitter();

// 绑定2次事件
$event->many('new', 2, function () {
    echo 'A new client is coming' . PHP_EOL;
});

$event->emit('new'); // 触发
$event->emit('new'); // 触发
$event->emit('new'); // 不触发

模糊绑定

绑定一个模糊的事件名称,可以匹配上的事件都会被触发

$event = new EventEmitter();

// 绑定模糊事件
$event->on('news.*', function($id){
    echo $id . ' is comming..., ID is ';
});

$event->emit('news.1');
$event->emit('news.2');
$event->emit('news.3');

删除

注销事件

当事件不用的时候可以注销掉

$event = new EventEmitter();

// 闭包回调
$operator = function () {
    echo 'A new client is coming' . PHP_EOL;
};

$event->on('new', $operator);

$event->emit('new');           // 触发

$event->off('new', $operator); // 解除绑定
$event->emit('new');           // 不触发

删除事件

删除指定类型的所有事件

$event = new EventEmitter();

$event->on('new', function () {
    echo 'A new client is coming' . PHP_EOL;
});

$event->removeAllListeners('new');

删除所有事件

清空事件

$event = new EventEmitter();

$event->on('new', function () {
    echo 'A new client is coming' . PHP_EOL;
});

$event->on('close', function () {
    echo 'The client has closed' . PHP_EOL;
});

$event->removeAllListeners();

继承事件功能

适用于为自己的对象增加事件功能

class MyClass extends EventEmitter {
}

$my = new MyClass;
$my->on('create', function($data){
    $db->save($data);
});

全局管理器

全局事件

可以作为默认事件管理器使用

// 注册事件
Event::on('save', function ($arg) {
    echo '1 saved: ' . $arg . PHP_EOL;
});

// 触发事件
Event::emit('save', 'test');

更换全局事件管理器

$emitter = new EventEmitter();
// 更换触发器
Event::emitter($emitter);

// 绑定事件
$event->on('save', function ($arg) {
    echo '1 saved: ' . $arg . PHP_EOL;
});

// 触发save
$event->emit('save', 'test');

// 效果同上
$emitter->emit('save', 'test');

许可证

(MIT许可证)

版权所有 (c) 2012 hfcorriez <hfcorriez@gmail.com>

在此特此授予任何获得本软件及其相关文档副本(以下简称“软件”)的人免费权利,允许其在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向软件提供者提供软件的人这样做,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、适用于特定目的和不受侵犯的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是由于合同、侵权或其他方式引起的,无论这些责任是否与软件或软件的使用或任何其他方式有关。