PHPackages                             circli/event-dispatcher - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. circli/event-dispatcher

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

circli/event-dispatcher
=======================

PSR-14 event dispatcher implementation.

3.0.0(2y ago)339.1k↓45.3%3MITPHPPHP ^8.0CI passing

Since Jan 21Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/circli/event-dispatcher)[ Packagist](https://packagist.org/packages/circli/event-dispatcher)[ RSS](/packages/circli-event-dispatcher/feed)WikiDiscussions 3.x Synced 1mo ago

READMEChangelog (9)Dependencies (6)Versions (18)Used By (3)

Circli Event Dispatcher
=======================

[](#circli-event-dispatcher)

[![Latest Version on Packagist](https://camo.githubusercontent.com/ff21983e79fb33fe69b243d49812802010c383e22b1d1d760b4c368213fde528/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f636972636c692f6576656e742d646973706174636865722e737667)](https://packagist.org/packages/circli/event-dispatcher)[![Software License](https://camo.githubusercontent.com/0989e2305d0cca2da428e39ecb51de19689239876bd1843d392691c0b4e92bdf/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f636972636c692f6576656e742d646973706174636865722e737667)](LICENSE.md)[![Build Status](https://github.com/circli/event-dispatcher/actions/workflows/unit-test.yml/badge.svg)](https://github.com/circli/event-dispatcher/actions/workflows/unit-test.yml)[![Coverage Status](https://camo.githubusercontent.com/70bc0b0d1c7b66100ce6c13d61e119b55610bd2131c6b56b48360b82b37eaa99/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f636972636c692f6576656e742d646973706174636865722f62616467652e7376673f6272616e63683d322e78)](https://coveralls.io/github/circli/event-dispatcher?branch=2.x)

The package provides a standard event dispatcher, as well as one null dispatcher that can be used as default dispatcher in the `EventDispatcherAwareInterface`

Installation
------------

[](#installation)

Via Composer

```
$ composer require circli/event-dispatcher

```

Usage
-----

[](#usage)

The dispatcher accepts a `Psr\EventDispatcher\ListenerProviderInterface` to its constructor

Basic example:

```
use Circli\EventDispatcher\EventDispatcher;
use Circli\EventDispatcher\ListenerProvider\DefaultProvider;

$provider = new DefaultProvider();
$dispatcher = new EventDispatcher($provider);

$provider->listen(Event::class, function(Event $e) {
    // do stuff
});

$dispatcher->dispatch(new Event());
```

Providers
---------

[](#providers)

The package includes a couple of providers for ease of use. You can also find some useful provider in [`fig/event-dispatcher-util`](https://github.com/php-fig/event-dispatcher-util)

### `DefaultProvider`

[](#defaultprovider)

```
use Circli\EventDispatcher\ListenerProvider\DefaultProvider;
$provider = new DefaultProvider();
$provider->listen(Event::class, $listener);
```

### `PriorityProvider`

[](#priorityprovider)

```
use Circli\EventDispatcher\ListenerProvider\PriorityProvider;
$provider = new PriorityProvider();

//Add listener with lower than default priority
$provider->listen(Event::class, $listener, 900);

//Add listener with higher than default priority
$provider->listen(Event::class, $listener, 1100);

//Add listener with normal priority
$provider->listen(Event::class, $listener);
```

### `ContainerListenerProvider`

[](#containerlistenerprovider)

Use a Psr-11 container to lazy load the callbacks.

```
use Circli\EventDispatcher\ListenerProvider\ContainerListenerProvider;
$container = new SomePsr11Container();

$provider = new ContainerListenerProvider($container);
$provider->addService(Event::class, EventListener::class);
```

### `PriorityAggregateProvider`

[](#priorityaggregateprovider)

```
use Circli\EventDispatcher\ListenerProvider\PriorityAggregateProvider;
use Circli\EventDispatcher\ListenerProvider\DefaultProvider;

$aggregateProvider = new PriorityAggregateProvider();
$aggregateProvider->addProvider(new DefaultProvider());

// Add with higher than default priority
$aggregateProvider->addProviderWithPriority(new DefaultProvider(), 1500);

// Add with lower than default priority
$aggregateProvider->addProviderWithPriority(new DefaultProvider(), 500);
```

### `FilterableProvider`

[](#filterableprovider)

```
use Circli\EventDispatcher\ListenerProvider\FilterableProvider;

$provider = new FilterableProvider();

$provider->listen(RandomEvent::class, $listener, function ($event) {
    return ifRandomExternalThingIsTrue();
});
```

###  Health Score

47

—

FairBetter than 94% of packages

Maintenance53

Moderate activity, may be stable

Popularity31

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity74

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~197 days

Recently: every ~312 days

Total

14

Last Release

108d ago

Major Versions

1.1.0 → 2.0.02019-04-02

2.x-dev → 3.0.02023-10-24

PHP version history (3 changes)2.2.0PHP ~7.2

2.3.0PHP &gt;=7.2

3.0.0PHP ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/ce9d40996574fd1f18f69556c872c6eb94e59977c5f0b33c9df541d82fbb3800?d=identicon)[sunkan](/maintainers/sunkan)

---

Top Contributors

[![sunkan](https://avatars.githubusercontent.com/u/568492?v=4)](https://github.com/sunkan "sunkan (45 commits)")

---

Tags

eventspsr-14Circli

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/circli-event-dispatcher/health.svg)

```
[![Health](https://phpackages.com/badges/circli-event-dispatcher/health.svg)](https://phpackages.com/packages/circli-event-dispatcher)
```

###  Alternatives

[psr/event-dispatcher

Standard interfaces for event handling.

2.3k618.8M865](/packages/psr-event-dispatcher)[crell/tukio

A robust, stand-alone PSR-14 event dispatcher implementation.

112183.8k13](/packages/crell-tukio)[fig/event-dispatcher-util

Useful utility classes and traits for implementing the PSR events standard

27423.2k19](/packages/fig-event-dispatcher-util)[phly/phly-event-dispatcher

Experimental event dispatcher for PSR-14

26209.9k4](/packages/phly-phly-event-dispatcher)[zumba/symbiosis

Symbiosis, event structure for bootstrapping plugins.

1360.4k1](/packages/zumba-symbiosis)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
