PHPackages                             mmdm/sim-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. mmdm/sim-event-dispatcher

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

mmdm/sim-event-dispatcher
=========================

A simple yet nice event dispatcher

v2.0.0(5y ago)1281MITPHPPHP &gt;=7.2

Since Aug 11Pushed 5y ago1 watchersCompare

[ Source](https://github.com/mmdm95/sim-event-dispatcher)[ Packagist](https://packagist.org/packages/mmdm/sim-event-dispatcher)[ RSS](/packages/mmdm-sim-event-dispatcher/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (9)Used By (1)

Simplicity Event Dispatcher
===========================

[](#simplicity-event-dispatcher)

A library for event management.

Install
-------

[](#install)

**composer**

```
composer require mmdm/sim-event-dispatcher
```

Or you can simply download zip file from github and extract it, then put file to your project library and use it like other libraries.

Just add line below to autoload files:

```
require_once 'path_to_library/autoloader.php';
```

and you are good to go.

How to use
----------

[](#how-to-use)

```
// we need event provider to add events to that
$event_provider = new EventProvider();

// also we need closure provider to add closures to that
$closure_provider = new ClosureProvider();

// then use their methods
$event_provider->addEvent(new Event('boot'))
    ->addEvent(new Event('close'));
//-----
$closure_provider->addClosure($nameOfClosureOrKey, function () {
    // define closure functionality
});

// to instanciate an emitter object,
// use event provider and closure provider,
// from above
$emitter = new Emitter($event_provider, $closure_provider);

// now work with listeners
$emitter->addListener($nameOfEvent, $nameOfClosureOrKey);
$emitter->removeListener($nameOfEvent, $nameOfClosureOrKey);

// finally dispatch event where you want
$emitter->dispatch($nameOfEvent);
```

Available functions
-------------------

[](#available-functions)

#### EventProvider

[](#eventprovider)

- addEvent(IEvent $event): IEventProvider

This method add an event to the provider

```
// to add an event
$event_provider->addEvent(new Event('cartOnBoot'));
```

- removeEvent(string $event\_name): IEventProvider

This method remove an event from the provider

```
// to remove an event
$event_provider->removeEvent('cartOnBoot');
```

- getEvent(string $event\_name): IEvent

This method gets an event from the provider

```
// to get an event
$event_provider->getEvent('cartOnBoot');
```

- hasEvent(string $event\_name): bool

This method checks to see if an event is exist in provider

```
// check if an event exists
$event_provider->hasEvent('cartOnBoot');
```

#### ClosureProvider

[](#closureprovider)

- addClosure($key, $closure): IClosureProvider

This method add a closure to provider

```
// to add a closure
$closure_provider->addClosure($closureKeyOrName, function () {
    // define closure functionality
});
```

- removeClosure($key): IClosureProvider

This method removes a closure from provider

```
// to remove a closure
$closure_provider->removeClosure($closureKeyOrName);
```

- getClosure($key): Closure

This method gets a closure from provider

```
// to get a closure
$closure_provider->getClosure($closureKeyOrName);
```

- hasClosure($key): bool

This method checks to see if a closure is exist in provider

```
// check if a closure exists
$closure_provider->hasClosure('cartOnBoot');
```

#### Emitter

[](#emitter)

- addListener(string $event\_name, string $closure\_name, int $priority = 0): IEmitter

This method add a listener to emitter

Note: If you need some listeners to emit faster than others, then you should pass priority as a number.(Higher value means higher priority)

```
// to add a listener
$emitter->addListener('cartOnBoot', 'cart_boot');
// or with a higher priority
$emitter->addListener('cartOnBoot', 'cart_boot', 5);
```

- removeListener(string $event\_name, string $closure\_name): IEmitter

This method removes a listener from emitter

```
// to remove a listener
$emitter->removeListener('cartOnBoot', 'cart_boot');
```

- removeAllListeners(string $event\_name): IEmitter

This method remove all listeners of an event from emitter

**Note:** Now you can pass wild cards *(regex)* as event too!

```
// to remove a listener
$emitter->removeAllListeners('cartOnBoot');

// to remove a listener with wild card
//
// code below will find all events like
// [cart:boot], [cartOnBoot], etc.
// and remove them all
$emitter->removeAllListeners('cart:?.*');
```

- getListener(string $event\_name): array

This method gets all listeners of an event from emitter

```
// to get all listeners of an event
$emitter->getListener('cartOnBoot');
```

- getAllListeners($wild\_card = null): array

This method gets all listeners from emitter

**Note:** You can filter listeners with their events through an extra parameter *$wild\_card* that is a regex

```
// to get all listeners
$emitter->getAllListeners();

// to get all events with [cart:boot] and [cart:orders]
$emitter->getAllListeners('cart:(boot|orders)');
```

License
=======

[](#license)

Under MIT license.

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity55

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

Total

8

Last Release

1865d ago

Major Versions

v1.1.3 → v2.0.02021-04-02

### Community

Maintainers

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

---

Top Contributors

[![mmdm95](https://avatars.githubusercontent.com/u/26489185?v=4)](https://github.com/mmdm95 "mmdm95 (39 commits)")

### Embed Badge

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

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

###  Alternatives

[mgallegos/laravel-jqgrid

Laravel jqGrid package allows you to easily integrate the popular jQuery Grid Plugin (jqGrid) into your Laravel application.

7115.5k1](/packages/mgallegos-laravel-jqgrid)[lifeonscreen/nova-sort-relations

This package improves support for sorting relations in Laravel Nova.

2081.9k](/packages/lifeonscreen-nova-sort-relations)

PHPackages © 2026

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