event-bus-interop
[!code_quality_img][code_quality]
![license_img]
![twitter_img], (*1)
Interfaces for interoperability between event bus implementations., (*2)
Overview
There are a number of event buses available within PHP, and they all slightly differ in their implementations, while also enforcing that any all events are derived from their interfaces or classes., (*3)
This is an effort to have all event buses use common interfaces that allow interoperability between emitters, events and listeners., (*4)
Requirements
The library requires PHP 5.6 or greater., (*5)
Installation
Installation is via composer:, (*6)
composer require eventbus-interop/eventbus-interop
The packages adheres to the SemVer specification, and there will be full backward compatibility
between minor versions., (*7)
The library contains several interfaces for usage by event buses:, (*8)
EventInterface
The interface defines three methods for an event to implement: name(), isPropagationStopped(), and stopPropagation()., (*9)
ListenerInterface
The interface defines one public method, handle(), which takes an EventInterface as it's single argument., (*10)
EmitterInterface
This defines three methods: emit(), which accepts multiple events as a variadic. emitName() and emitEvent() are used to type hint. A trait, EmitterTrait, proxies the individual events received in the variadic created by emit() to the corresponding method as appropriate., (*11)
ListenerAcceptorInterface
This defines a simple method, addListener(), which accepts three arguments: the event ID to bind the event to, the listener itself, and an optional integer priority., (*12)
Credits
The event bus interop project has been heavily influenced by the work of the container-interop project, which led to a robust unification of the various DI containers within the PHP community., (*13)