PHPackages                             powertools/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. [Utility &amp; Helpers](/categories/utility)
4. /
5. powertools/event

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

powertools/event
================

PHP PowerTools Event Component

04PHP

Since Apr 7Pushed 10y ago1 watchersCompare

[ Source](https://github.com/PHPPowertools/Event)[ Packagist](https://packagist.org/packages/powertools/event)[ RSS](/packages/powertools-event/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Event Component
===============

[](#event-component)

***[PHPPowertools](https://github.com/PHPPowertools)*** is a web application framework for PHP &gt;= 5.4.

***[PHPPowertools/Event](https://github.com/PHPPowertools/Event)*** is the third component of the ***PHPPowertools*** that has been released to the public.

The purpose of this component is to provide a PHP-based event handling interface similar to both NodeJS's ***[EventEmitter](https://nodejs.org/api/events.html#events_class_events_eventemitter)*** and your browser's ***[EventTarget](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget)***.

##### Example use :

[](#example-use-)

```
use \PowerTools\Event_Emitter as Event_Emitter;

// Define some event handlers
$eventHandlers = [
    'handler1' => function($a = '', $b = '') {
        //   var_dump($this);
        echo 'handler1 fired with parameters "' . $a . '" and "' . $b . '"';
    }, 'handler2' => function($a = '', $b = '') {
        //   var_dump($this);
        echo 'handler2 fired with parameters "' . $a . '" and "' . $b . '"';
    }, 'handler3' => function($a = '', $b = '') {
        //   var_dump($this);
        echo 'handler3 fired with parameters "' . $a . '" and "' . $b . '"';
    }, 'handler4' => function($a = '', $b = '') {
        //   var_dump($this);
        echo 'handler4 fired with parameters "' . $a . '" and "' . $b . '"';
    }
];

// Create an instance of the Event_Emitter class
$emitter = Event_Emitter::factory();

// Add your event handlers to your Event_Emitter instance for the 'go' event.
$emitter->addListeners('go', $eventHandlers);

// Emit the 'go' event, with parameters 'FOO' and 1.
$emitter->emit('go', 'FOO', 1);

// Remove the second event handler for the 'go' event
$emitter->removeListener('go', $eventHandlers['handler2']);

// Remove ALL listeners for the 'go' event
$emitter->removeAllListeners('go');
```

---

##### Supported methods :

[](#supported-methods-)

- [addListener](https://nodejs.org/api/events.html#events_emitter_addlistener_event_listener)
- addListeners *(1)*
- [once](https://nodejs.org/api/events.html#events_emitter_once_event_listener)
- [removeListener](https://nodejs.org/api/events.html#events_emitter_removelistener_event_listener)
- removeListeners *(1)*
- [removeAllListeners](https://nodejs.org/api/events.html#events_emitter_removealllisteners_event)
- [setMaxListeners](https://nodejs.org/api/events.html#events_emitter_setmaxlisteners_n)
- [getMaxListeners](https://nodejs.org/api/events.html#events_emitter_getmaxlisteners)
- [listeners](https://nodejs.org/api/events.html#events_emitter_listeners_event)
- [emit](https://nodejs.org/api/events.html#events_emitter_emit_event_arg1_arg2)
- [listenerCount](https://nodejs.org/api/events.html#events_emitter_listenercount_type)
- [dispatch](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/dispatchEvent)

---

1. These methods have no equivalent in either NodeJS's ***[EventEmitter](https://nodejs.org/api/events.html#events_class_events_eventemitter)*** or your browser's ***[EventTarget](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget)***.

---

##### Author

[](#author)

[![twitter/johnslegers](https://camo.githubusercontent.com/3f588c061f691c1a18db125c956f40ad3796061291c66ea5a54536e255403aa4/68747470733a2f2f656e2e67726176617461722e636f6d2f6176617461722f62663463633934323231333832383130323333353735383632383735653638373f733d3730)](http://twitter.com/johnslegers "Follow @johnslegers on Twitter")[John slegers](http://www.johnslegers.com/)

###  Health Score

19

—

LowBetter than 9% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity41

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.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/883647?v=4)[John Slegers](/maintainers/jslegers)[@jslegers](https://github.com/jslegers)

---

Top Contributors

[![jslegers](https://avatars.githubusercontent.com/u/883647?v=4)](https://github.com/jslegers "jslegers (13 commits)")

### Embed Badge

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

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

###  Alternatives

[jerome/matrix

An unparalleled PHP asynchronous experience, offering genuine concurrency and fiber-based task management.

6011.2k3](/packages/jerome-matrix)[peerme/mx-sdk-laravel

MultiversX SDK for Laravel (written in PHP).

135.1k](/packages/peerme-mx-sdk-laravel)

PHPackages © 2026

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