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 3w 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 13% 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

1719d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/5098237?v=4)[symbiotic](/maintainers/symbiotic)[@symbiotic](https://github.com/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

[phpro/soap-client

A general purpose SoapClient library

8896.1M54](/packages/phpro-soap-client)[crell/tukio

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

114214.2k17](/packages/crell-tukio)[fig/event-dispatcher-util

Useful utility classes and traits for implementing the PSR events standard

27473.2k21](/packages/fig-event-dispatcher-util)[shopware/app-php-sdk

Shopware App SDK for PHP

15109.8k3](/packages/shopware-app-php-sdk)[phly/phly-event-dispatcher

Experimental event dispatcher for PSR-14

26284.5k6](/packages/phly-phly-event-dispatcher)[eliashaeussler/typo3-form-consent

Extension for TYPO3 CMS that adds double opt-in functionality to EXT:form

1595.5k](/packages/eliashaeussler-typo3-form-consent)

PHPackages © 2026

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