Skip to content

php-eventbus-interop/event-bus-interop

Repository files navigation

event-bus-interop

code_quality_img license_img twitter_img

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.