krak/event-emitter

事件发射器

v0.1.0 2017-03-19 04:32 UTC

This package is auto-updated.

Last update: 2024-09-18 17:42:53 UTC


README

一个具有很多灵活性的简单事件发射器包。受Evenement库的启发,EventEmitter提供了一个简单的接口来添加和发射事件。

安装

使用composer安装 krak/event-emitter

使用方法

<?php

$emitter = Krak\EventEmitter\emitter(); // creates the default emitter instance
$emitter->on('event', function($arg) {
    echo "Hello $arg\n";
});
$emitter->emit('event', "World");

这是事件发射器接口

<?php

interface EventEmitter {
    public function on($event, $listener);
    public function once($event, $listener);
    public function removeListener($event, $listener);
    public function removeAllListeners($event = null);
    public function listeners($event);
    public function emit($event, ...$arguments);
}

事件监听器

您可以通过实现 EventListener 接口来添加事件监听器类。

<?php

use Krak\EventEmitter\EventListener;

class AcmeListener implements EventListener
{
    public function handle($param) {

    }
}

然后,您可以通过以下方式将其添加到发射器中:

<?php

$emitter->on('event', new AcmeListener());

自定义调用

默认发射器通过Krak\Invoke库支持自定义调用。您可以轻松传递一个自定义调用者,它提供了一种灵活性,即如何调用您的监听器。

<?php

use Krak\EventEmitter;

// this creates an emitter that will support container services as listeners
$invoke = new Krak\Invoke\ContainerInvoke(EventEmitter\emitterInvoke(), $container);
$emitter = Krak\EventEmitter\emitter($invoke);
$emitter->on('event', 'service_id');
$emitter->emit('event', 1);