Download the PHP package acairns/radiate without Composer
On this page you can find all versions of the php package acairns/radiate. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package radiate
Radiate
Introduction
Radiate is a package for managing Events.
Basic Usage
Simply create an instance of the Emitter
and emit events!
Creating the Emitter
Radiate requires a pipeline of middleware when being created. The main middleware required to invoke listeners is an
instance of the InvokeListenerMiddleware
class.
In order to invoke a Listener, the middleware needs to know the available Listeners ($registry
), how to create an
instance of the subscribed Listeners ($locator
) and how to determine which method should be invoked ($inflector
).
Registrys
A Registry is a simple class responsible of keeping track all of the subscribed Listeners.
Locators
The responsibility of the locator is to take a Fully Qualified Class Name for a Listener and to return an instance. If you are using a Dependency Injection container, then this is where you want to resolve the concrete instance.
Inflectors
The job of the inflector is to determine which method should be called on a particular Listener given a specific Event. Several Inflectors are provided for common setups.
HandleMethodInflector
The HandleMethodInflector
ensures the handle()
method is returned. A Listener could look like this:
TypehintMethodInflector
The TypehintMethodInflector
ensures any method dependent on the type of event is returned. A Listener could look like
this:
When using the TypehintMethodInflector
, you can define multiple public methods so that the same Listener can respond
to different events.
Simple Example
Inspiration
This library is inspired by:
Contributing
Even though this is just an experiment for now, I'm totally open to ideas. Shoot over a PR!
If you decide to help out, here are some helpful things to check:
Running tests
Code Sniffer
Todo
- [ ] Bump to >=PHP7, update codebase (return types, typehint, etc.)
- [ ] Extract examples into example directory
- [ ] Make registry serialisable, and constructable from a serialised registry