PHPackages                             spiral-packages/league-event - 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. [Framework](/categories/framework)
4. /
5. spiral-packages/league-event

ActiveLibrary[Framework](/categories/framework)

spiral-packages/league-event
============================

The League Event bridge for Spiral Framework

1.0.1(3y ago)161.3k—3.9%1[2 PRs](https://github.com/spiral-packages/league-event/pulls)2MITPHPPHP ^8.1

Since Sep 7Pushed 2y ago1 watchersCompare

[ Source](https://github.com/spiral-packages/league-event)[ Packagist](https://packagist.org/packages/spiral-packages/league-event)[ Docs](https://github.com/spiral-packages/symfony-event-dispatcher)[ RSS](/packages/spiral-packages-league-event/feed)WikiDiscussions master Synced 1mo ago

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

The League Event bridge for Spiral Framework
============================================

[](#the-league-event-bridge-for-spiral-framework)

[![PHP](https://camo.githubusercontent.com/900b74025e706e0eb0e2ee4590bbc3ad1ec9a9723d3daebef3ebf2c2a240c807/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f73706972616c2d7061636b616765732f6c65616775652d6576656e742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/spiral-packages/league-event)[![Latest Version on Packagist](https://camo.githubusercontent.com/5e6017d5870db8d8285cd1277b9ccd56942ddf3f54d22d65744da77ddc2d3be1/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f73706972616c2d7061636b616765732f6c65616775652d6576656e742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/spiral-packages/league-event)[![GitHub Tests Action Status](https://camo.githubusercontent.com/c89f71cca88772580d615dc7ccde600061ac2c37c21384a121747e3201ac329b/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f73706972616c2d7061636b616765732f6c65616775652d6576656e742f72756e2d74657374733f6c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/spiral-packages/league-event/actions?query=workflow%3Arun-tests+branch%3Amaster)[![Total Downloads](https://camo.githubusercontent.com/b617ba1b30a991896be5046cc1b1c078334fdae83d0d8860249139617a97dfe5/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f73706972616c2d7061636b616765732f6c65616775652d6576656e742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/spiral-packages/league-event)

Requirements
------------

[](#requirements)

Make sure that your server is configured with following PHP version and extensions:

- PHP 8.1+
- Spiral framework 3.0+

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

[](#installation)

You can install the package via composer:

```
composer require spiral-packages/league-event
```

After package install you need to register bootloader from the package.

```
protected const LOAD = [
    // ...
    \Spiral\League\Event\Bootloader\EventBootloader::class,
];
```

> **Note**If you are using [`spiral-packages/discoverer`](https://github.com/spiral-packages/discoverer), you don't need to register bootloader by yourself.

Usage
-----

[](#usage)

### Event

[](#event)

An event can be represented by a simple class:

```
namespace Spiral\Router\Event;

use Spiral\Router\RouteInterface;

final class RouteFound
{
    public function __construct(
        public readonly RouteInterface $route
    ) {
    }
}
```

#### Dispatching an event:

[](#dispatching-an-event)

```
$this->container->get(EventDispatcherInterface::class)->dispatch(new RouteNotFound($request));
```

### Listener

[](#listener)

A listener can be represented by a simple class with a method that will be called to handle the event. The method name can be configured in the Listener attribute parameter or in the configuration file (` __invoke` by default):

```
namespace App\Listener;

use Spiral\Events\Attribute\Listener;
use Spiral\Router\Event\RouteFound;

class RouteListener
{
    public function __invoke(RouteFound $event): void
    {
        // ...
    }
}
```

#### Registering a listener via a config file:

[](#registering-a-listener-via-a-config-file)

```
// file app/config/events.php

use App\Listener\RouteListener;
use Spiral\Events\Config\EventListener;
use Spiral\Router\Event\RouteFound;

return [
    'listeners' => [
        // without any options
        RouteFound::class => [
            RouteListener::class,
        ],

        // OR

        // with additional options
        RouteFound::class => [
            new EventListener(
                listener: RouteListener::class,
                method: 'onRouteFound',
                priority: 1
            ),
        ],
    ]
];
```

#### Registering a listener via an attribute:

[](#registering-a-listener-via-an-attribute)

The attribute can be used without additional parameters. Then the method name `__invoke` and the event from the type of the method parameter will be used:

```
namespace App\Listener;

use Spiral\Events\Attribute\Listener;
use Spiral\Router\Event\RouteFound;

#[Listener]
class RouteListener
{
    public function __invoke(RouteFound $event): void
    {
        // ...
    }
}
```

All available options:

```
namespace App\Listener;

use Spiral\Events\Attribute\Listener;
use Spiral\Router\Event\RouteFound;

#[Listener(event: RouteFound::class, method: 'onRouteFound', priority: 1)]
class RouteListener
{
    public function onRouteFound(RouteFound $event): void
    {
        // ...
    }
}
```

The attribute can be used directly on the method, then the method name can be omitted:

```
namespace App\Listener;

use Spiral\Events\Attribute\Listener;
use Spiral\Router\Event\RouteFound;

class RouteListener
{
    #[Listener(priority: 1)]
    public function onRouteFound(RouteFound $event): void
    {
        // ...
    }
}
```

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE) for more information.

###  Health Score

35

—

LowBetter than 80% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity33

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 71.4% 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 ~6 days

Total

2

Last Release

1343d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/773481?v=4)[Pavel Buchnev](/maintainers/butschster)[@butschster](https://github.com/butschster)

---

Top Contributors

[![msmakouz](https://avatars.githubusercontent.com/u/67324318?v=4)](https://github.com/msmakouz "msmakouz (5 commits)")[![butschster](https://avatars.githubusercontent.com/u/773481?v=4)](https://github.com/butschster "butschster (2 commits)")

---

Tags

event dispatcherspiralspiral-packages

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/spiral-packages-league-event/health.svg)

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

###  Alternatives

[yiisoft/event-dispatcher

Yii Event Dispatcher

72900.2k25](/packages/yiisoft-event-dispatcher)[spiral/temporal-bridge

Temporal integration package for Spiral Framework

58901.5k](/packages/spiral-temporal-bridge)[phprest/phprest

PHP Rest Framework.

3049.3k](/packages/phprest-phprest)[bauncms/framework

The Baun Framework

142.6k1](/packages/bauncms-framework)

PHPackages © 2026

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