PHPackages                             symbiotic/event-dispatcher-composite - 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. symbiotic/event-dispatcher-composite

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

symbiotic/event-dispatcher-composite
====================================

Composite dispatcher and Listener Provider makes it possible to process events by several Dispatchers at once.

1.0.0(4y ago)04BSD-3-ClausePHPPHP &gt;=7.2.0

Since Oct 20Pushed 4y agoCompare

[ Source](https://github.com/symbiotic-php/event-dispatcher-composite)[ Packagist](https://packagist.org/packages/symbiotic/event-dispatcher-composite)[ RSS](/packages/symbiotic-event-dispatcher-composite/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (1)Dependencies (1)Versions (2)Used By (0)

Composite Event Dispatcher-14
-----------------------------

[](#composite-event-dispatcher-14)

Install
-------

[](#install)

```
composer require symbiotic/event-dispatcher-composite

You can also put an implementation "symbiotic/event-dispatcher"
Decorator for cached events "symbiotic/event-dispatcher-cached"

```

Using the Composite Dispatcher
------------------------------

[](#using-the-composite-dispatcher)

Composite dispatcher makes it possible to process events by several Dispatchers at once.

```
/**
 * @var Psr\EventDispatcher\ListenerProviderInterface $coreProvider
 * @var Psr\EventDispatcher\ListenerProviderInterface $appProvider
 **/
$core_dispatcher = new MyEventDispatcher($coreProvider);
$app_dispatcher = new MyEventDispatcher($appProvider);

$dispatcher = new  \Symbiotic\Event\CompositeEventDispatcher();
// we add several dispatchers for processing at once
$dispatcher->attach($core_dispatcher);
$dispatcher->attach($app_dispatcher);

// Now the event will be processed by several dispatchers at once

$event = $dispatcher->dispatch(new MyEvent());
```

Composite Listener Provider
---------------------------

[](#composite-listener-provider)

It is also possible to implement event handling from multiple sources using a composition of providers. This approach is used in the framework to sequentially collect listeners in order of priority (core-&gt;application-&gt;plugin).

```
/**
 * @var Psr\EventDispatcher\ListenerProviderInterface $core_provider
 * @var Psr\EventDispatcher\ListenerProviderInterface $app_provider
 * @var Psr\EventDispatcher\ListenerProviderInterface $compositeProvider
 **/
$core_provider = new ListenerProvider();
$app_provider = new ListenerProvider();
// adding listeners to providers...

/**
 * @var Psr\EventDispatcher\ListenerProviderInterface|\Symbiotic\Event\CompositeListenersProvider $compositeProvider
 **/
$compositeProvider = new \Symbiotic\Event\CompositeListenersProvider();
$compositeProvider->attach($core_provider);
$compositeProvider->attach($app_provider);

/**
 * @var Psr\EventDispatcher\EventDispatcherInterface $dispatcher
 **/
$dispatcher = new MyEventDispatcher($compositeProvider);

$event = $dispatcher->dispatch(new MyEvent());
```

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

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

Unknown

Total

1

Last Release

1666d ago

### Community

Maintainers

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

---

Tags

psr-14SymbioticPHPComposite Event DispatcherComposite Event Listener provider

### Embed Badge

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

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

###  Alternatives

[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)

PHPackages © 2026

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