symbiont/dispatcher

Event Dispatcher Library

v1.0.2 2024-06-28 13:48 UTC

This package is auto-updated.

Last update: 2024-08-28 12:15:57 UTC


README

Simple event dispatcher

This package is work in progress!

Requirements

  • php 8.2

Installation

composer require symbiont/dispatcher

Usage

Using EventDispatcher and Dispatcher.

use Symbiont\Dispatcher\{Dispatcher, EventDispatcher};

// global event dispatcher
EventDispatcher::register('test', function() {
    return 'test';
});
EventDispatcher::once('test', function() {
    return 'once';
})
EventDispatcher::dispatch('test');

// local event dispatcher
$dispatcher = new Dispatcher;
$dispatcher->register('test', function() {
    return 'test';
});
$dispatcher->once('test', function() {
    return 'once';
});
$dispatcher->dispatch('test');

Implementing an event dispatcher in terms of callbacks using Callbackable and DispatchesEvent trait.

use Symbiont\Dispatcher\Contracts\Callbackable;
use Symbiont\Dispatcher\Concerns\DispatchesEvent;

class Awesome implements Callbackable {
    use DispatchesEvent;
    
    public function load() {
        $this->trigger('beforeLoad');
        // something to load ..
        $this->trigger('afterLoad');
    }
}

$awesome = new Awesome;
$awesome->on('afterLoad', function() {
    // something to do after load ..
});
$awesome->load();

Documentation

This documentation only documents the technical usage of this package with little to no text.

Tests

composer test

License

MIT license