th3mouk/reactive-event-dispatcher

ReactiveX PHP 的 PSR-14 (事件分发器) 的不可变实现。

0.1.0 2021-10-28 20:39 UTC

This package is auto-updated.

Last update: 2024-08-29 02:50:26 UTC


README

此 PHP 库为 ReactiveX PHP 提供 PSR-14 的不可变实现。

Latest Stable Version Latest Unstable Version Total Downloads License

Coverage Status Scrutinizer Code Quality

安装

composer require th3mouk/reactive-event-dispatcher

使用

Psalm 的使用是推荐的。请参阅相关的 简介文档

use Psr\Container\ContainerInterface;
use Rx\Observable;
use Th3Mouk\ReactiveEventDispatcher\Dispatcher;
use Th3Mouk\ReactiveEventDispatcher\Event;
use Th3Mouk\ReactiveEventDispatcher\EventCorrelation;
use Th3Mouk\ReactiveEventDispatcher\Listener;
use Th3Mouk\ReactiveEventDispatcher\ListenerProvider;
use Th3Mouk\ReactiveEventDispatcher\Priority;


$event = new class implements Event {};
$listener = new class implements Listener {
    public function process (Event $event) : Observable {
        return Observable::of(1);    
    }
};

// Link between an event and a listener
// Higher is the priority, earlier is the call
$event_correlations = [
    EventCorrelation::create(
        get_class($event),
        get_class($listener),
        Priority::fromInt(0),
    )
];

// Any object implementing ContainerInterface
// Listeners must be present into
$locator = new class implements ContainerInterface{
    public function get($id){
    }
    
    public function has($id){
    }
};


$listener_provider = new ListenerProvider($locator, $event_correlations);

$dispatcher = new Dispatcher($listener_provider);

$dispatcher->dispatch($event)->subscribe();

请随意改进此库。