eventbus-interop / eventbus-interop
Interoperability interface definitions for event buses
Requires
- php: >=5.6
Requires (Dev)
This package is not auto-updated.
Last update: 2024-04-13 23:46:30 UTC
README
Interfaces for interoperability between event bus implementations.
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.
This is an effort to have all event buses use common interfaces that allow interoperability between emitters, events and listeners.
Requirements
The library requires PHP 5.6 or greater.
Installation
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:
EventInterface
The interface defines three methods for an event to implement: name()
, isPropagationStopped()
, and stopPropagation()
.
ListenerInterface
The interface defines one public method, handle()
, which takes an EventInterface as it's single argument.
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.
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.
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.