PHPackages                             smoren/event-router - 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. smoren/event-router

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

smoren/event-router
===================

Router for flexible configuring of event handling behaviors

v0.3.1(3y ago)99211MITPHPPHP &gt;=7.4.0

Since Dec 16Pushed 2y ago1 watchersCompare

[ Source](https://github.com/Smoren/event-router-php)[ Packagist](https://packagist.org/packages/smoren/event-router)[ RSS](/packages/smoren-event-router/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (5)Dependencies (7)Versions (7)Used By (1)

event-router
============

[](#event-router)

[![Packagist PHP Version Support](https://camo.githubusercontent.com/2b2c36fa3d1cb70261a0378fc15b69d1bfcfec6847e97b22bf5b26045f86883d/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f736d6f72656e2f6576656e742d726f75746572)](https://camo.githubusercontent.com/2b2c36fa3d1cb70261a0378fc15b69d1bfcfec6847e97b22bf5b26045f86883d/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f736d6f72656e2f6576656e742d726f75746572)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/1bd7c3f4928046d1d89f80d8787ab3af22829aeb811e3f0bd439d7f4e1715e46/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f536d6f72656e2f6576656e742d726f757465722d7068702f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/Smoren/event-router-php/?branch=master)[![Code Coverage](https://camo.githubusercontent.com/7ade51905e6fc6f7c22ab0ce834d38a62b5f7036f5242580caf9d5defe4aa5e9/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f536d6f72656e2f6576656e742d726f757465722d7068702f6261646765732f636f7665726167652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/Smoren/event-router-php/?branch=master)[![Build and test](https://github.com/Smoren/event-router-php/actions/workflows/test_master.yml/badge.svg)](https://github.com/Smoren/event-router-php/actions/workflows/test_master.yml/badge.svg)[![License: MIT](https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667)](https://opensource.org/licenses/MIT)

Router for flexible configuring of event handling behaviors.

### How to install to your project

[](#how-to-install-to-your-project)

```
composer require smoren/event-router

```

### Unit testing

[](#unit-testing)

```
composer install
composer test-init
composer test

```

### Usage

[](#usage)

```
use Smoren\EventRouter\Components\EventRouter;
use Smoren\EventRouter\Interfaces\EventInterface;
use Smoren\EventRouter\Events\Event;
use Smoren\EventRouter\Structs\EventConfig;
use Smoren\EventRouter\Loggers\ArrayLogger;

$router = new EventRouter(10, new ArrayLogger());
$router
    ->on(new EventConfig('origin1'), function(EventInterface $event) {
        return null;
    })
    ->on(new EventConfig('origin1', 'recursive_single'), function(EventInterface $event) {
        return new Event('origin2', 'test');
    })
    ->on(new EventConfig('origin1', 'recursive_multiple'), function(EventInterface $event) {
        return [
            new Event('origin1', 'recursive_single'),
            new Event('origin2', 'test'),
        ];
    })
    ->on(new EventConfig('origin2'), function(EventInterface $event) {
        return null;
    });

$router->send(new Event('origin1', 'first'));
```

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity40

Maturing project, gaining track record

 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 ~1 days

Total

5

Last Release

1236d ago

### Community

Maintainers

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

---

Top Contributors

[![Smoren](https://avatars.githubusercontent.com/u/7403235?v=4)](https://github.com/Smoren "Smoren (31 commits)")

---

Tags

eventeventbusrouternestedaccessor

###  Code Quality

TestsCodeception

Static AnalysisPHPStan

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/smoren-event-router/health.svg)

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

###  Alternatives

[league/config

Define configuration arrays with strict schemas and access values with dot notation

564302.2M24](/packages/league-config)[kartik-v/yii2-tree-manager

An enhanced tree management module with tree node selection and manipulation using nested sets.

156529.0k15](/packages/kartik-v-yii2-tree-manager)[michaels/data-manager

Simple data manager for nested data, dot notation array access, extendability, and container interoperability.

121.9k2](/packages/michaels-data-manager)

PHPackages © 2026

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