2017 © Pedro Peláez
 

library event-dispatcher

A simple event dispatcher library written in PHP

image

gandung/event-dispatcher

A simple event dispatcher library written in PHP

  • Friday, September 22, 2017
  • by gandung
  • Repository
  • 1 Watchers
  • 0 Stars
  • 0 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

Event Dispatcher

Minimum PHP Version Build status SensioLabsInsight, (*1)

This is a simple library for managing event (e.g, http-kernel event, exception event) which utilizes Symfony event dispatcher class interface as event dispatcher object and Symfony event subscriber class interface as event subscriber (or listener collection) for current event dispatcher object., (*2)

This event dispatcher library uses several design patterns for extendibility and maintainability:, (*3)

Table Of Content

Quick Start

EventDispatcher object instantiation

use Gandung\EventDispatcher\EventDispatcher;
use Gandung\EventDispatcher\EventContainer;

$dispatcher = new EventDispatcher(new EventContainer);

or, you can do it with a factory., (*4)

use Gandung\EventDispatcher\EventDispatcherFactory;

$factory = new EventDispatcherFactory;
$dispatcher = $factory->getDispatcher();

Resolving events using simple closure based listener

use Gandung\EventDispatcher\EventDispatcherFactory;

$factory = new EventDispatcherFactory;
$dispatcher = $factory->getDispatcher();
$listener = function() {
    echo "i'am a closure based listener.\n";
};

$dispatcher->attachListener('event.simple.closure', $listener, 20);
$dispatcher->dispatch('event.simple.closure');

Resolving events using simple object based listener

use Gandung\EventDispatcher\EventDispatcherFactory;

class Foo
{
    public function dummyResolver()
    {
        echo sprintf("Inside {%s}@{%s}", \spl_object_hash($this), __METHOD__);
    }
}

$foo = new Foo();
$factory = new EventDispatcherFactory;
$dispatcher = $factory->getDispatcher();
$dispatcher->attachListener('event.simple.object', [$foo, 'dummyResolver'], 20);
$dispatcher->dispatch('event.simple.object');

Resolving subscribed events

use Gandung\EventDispatcher\EventDispatcherFactory;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class FooSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents()
    {
        return [
            'event.simple.prioritized' => [
                ['dummyResolver1', 20],
                ['dummyResolver2', 10],
                ['dummyResolver3', -90]
            ],
            'event.simple.unprioritized' => [
                'unprioritizedResolver'
            ],
            'event.simple.single' => 'singleResolver'
        ];
    }

    public function dummyResolver1()
    {
        echo sprintf("{%s@%s}\n", \spl_object_hash($this), __METHOD__);
    }

    public function dummyResolver2()
    {
        echo sprintf("{%s@%s}\n", \spl_object_hash($this), __METHOD__);
    }

    public function dummyResolver3()
    {
        echo sprintf("{%s@%s}\n", \spl_object_hash($this), __METHOD__);
    }

    public function unprioritizedResolver()
    {
        echo sprintf("{%s@%s}\n", \spl_object_hash($this), __METHOD__);
    }

    public function singleResolver()
    {
        echo sprintf("{%s@%s}\n", \spl_object_hash($this), __METHOD__);
    }
}

$subscriber = new FooSubscriber;
$factory = new EventDispatcherFactory();
$dispatcher->attachSubscriber($subscriber);
$dispatcher->dispatch('event.simple.prioritized');
$dispatcher->dispatch('event.simple.unprioritized');
$dispatcher->dispatch('event.simple.single');

API

EventDispatcherFactory

getDispatcher(), (*5)

Return the EventDispatcher object instance., (*6)

EventDispatcher

attachListener($event, $listener, $priority = 0), (*7)

Append listener handler to specified event., (*8)

detachListener($event, $listener), (*9)

Remove listener handler to specified event., (*10)

getListeners($event = null), (*11)

Get listener that bind on specified event., (*12)

hasListeners($event = null), (*13)

Determine if specified event name has listeners., (*14)

setListenerPriority($event, $listener, $priority), (*15)

Set event listener priority., (*16)

getListenerPriority($event, $listener), (*17)

Get event listener priority., (*18)

attachSubscriber(EventSubscriberInterface $subscriber), (*19)

Register event subscriber., (*20)

detachSubscriber(EventSubscriberInterface $subscriber), (*21)

Remove event subscriber., (*22)

dispatch($event, Event $eventHandler = null), (*23)

Dispatch the specified event., (*24)

The Versions

22/09 2017

dev-master

9999999-dev

A simple event dispatcher library written in PHP

  Sources   Download

BSD-3-Clause

The Requires

 

by Paulus Gandung Prakosa

05/09 2017

dev-add-license-1

dev-add-license-1

A simple event dispatcher library written in PHP

  Sources   Download

BSD-3-Clause

The Requires

 

by Paulus Gandung Prakosa

05/09 2017

v1.0.0

1.0.0.0

A simple event dispatcher library written in PHP

  Sources   Download

BSD-3-Clause

The Requires

 

by Paulus Gandung Prakosa