pagon / eventemitter
PHP的事件发射器
0.5.2
2013-09-26 03:19 UTC
Requires
- php: >=5.3.0
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>
在此特此授予任何获得本软件及其相关文档副本(以下简称“软件”)的人免费权利,允许其在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向软件提供者提供软件的人这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、适用于特定目的和不受侵犯的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是由于合同、侵权或其他方式引起的,无论这些责任是否与软件或软件的使用或任何其他方式有关。