Interfaces for interoperability between event bus implementations.
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.
This is an effort to have all event buses use common interfaces that allow interoperability between emitters, events and listeners.
The library requires PHP 5.6 or greater.
Installation is via composer:
composer require eventbus-interop/eventbus-interop
The packages adheres to the SemVer specification, and there will be full backward compatibility between minor versions.
The library contains several interfaces for usage by event buses:
The interface defines three methods for an event to implement: name()
, isPropagationStopped()
, and stopPropagation()
.
The interface defines one public method, handle()
, which takes an EventInterface as it's single argument.
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.
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.
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.