https://github.com/brick/event
An event dispatching library for PHP
https://github.com/brick/event
event-dispatcher events php
Last synced: about 1 year ago
JSON representation
An event dispatching library for PHP
- Host: GitHub
- URL: https://github.com/brick/event
- Owner: brick
- License: mit
- Created: 2014-09-04T09:59:23.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2024-05-02T23:16:53.000Z (about 2 years ago)
- Last Synced: 2024-09-21T09:52:46.494Z (almost 2 years ago)
- Topics: event-dispatcher, events, php
- Language: PHP
- Homepage:
- Size: 37.1 KB
- Stars: 22
- Watchers: 5
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Brick\Event
===========

A simple event dispatching mechanism.
[](https://github.com/brick/event/actions)
[](https://coveralls.io/github/brick/event?branch=master)
[](https://packagist.org/packages/brick/event)
[](http://opensource.org/licenses/MIT)
Introduction
------------
This library helps to write extensible software by plugging in external listeners to events dispatched by an application.
Installation
------------
This library is installable via [Composer](https://getcomposer.org/):
```bash
composer require brick/event
```
Requirements
------------
This library requires PHP 7.1 or later.
Overview
--------
This package provides the `EventDispatcher`.
The dispatcher dispatches *events*: an event is a unique `string` along with optional parameters.
The events are intercepted by *listeners*: any `callable` can be an event listener.
### Basic usage
Let's instantiate a dispatcher:
use Brick\Event\EventDispatcher;
$dispatcher = new EventDispatcher();
And add a few listeners:
$dispatcher->addListener('startup', function() {
echo 'Caught startup event';
});
$dispatcher->addListener('shutdown', function() {
echo 'Caught shutdown event';
});
Now, let's dispatch some events:
$dispatcher->dispatch('startup'); // will display "Caught startup event"
$dispatcher->dispatch('shutdown'); // will display "Caught shutdown event"
Any additional parameters you pass to `dispatch()` are forwarded to the listeners:
$dispatcher->addListener('test', function($a, $b) {
echo "Caught $a and $b";
});
$dispatcher->dispatch('test', 'Hello', 'World'); // will display "Caught Hello and World"
### Setting priorities
By default, the listeners are called in the order they have been registered. It is possible to bypass this
natural order by passing a priority to `addListener()`:
$dispatcher->addListener('startup', function() { ... }, 10);
The default priority is `0`. The listeners with the highest priority will be called first in the chain.
Two listeners with the same priority will be called in the order they have been registered.
### Stopping event propagation
Any listener can decide that the event should not be propagated to further listeners in the chain, by returning `false`:
$dispatcher->addListener('startup', function() {
// ...
return false;
});
The dispatcher will then break the chain and no further listeners will be called for this event.