Search by

rudra / event-dispatcher

jagepard

Rudra framework

Package info

github.com/Jagepard/Rudra-EventDispatcher

pkg:composer/rudra/event-dispatcher

Statistics

Installs: 363

Dependents: 1

Suggesters: 0

Stars: 1

Open Issues: 0

v26.9.3 2026-07-03 16:54 UTC

This package is auto-updated.

Last update: 2026-10-08 08:25:00 UTC


README

PHPunit Maintainability CodeFactor Coverage Status

Rudra-EventDispatcher | API

Install

composer require rudra/event-dispatcher

Usage

use Rudra\EventDispatcher\EventDispatcherFacade as Dispatcher;
Add a listener
Dispatcher::addListener('app.listener', [AppListener::class, 'onEvent']);
Dispatcher::addListener('app.closure', function () {
    Rudra::config()->set(['closure' => 'closure']);
});
Dispatcher::addListener('before', [new TestController(), 'before']);
Dispatch an event
Dispatcher::dispatch('app.listener', 123);

// For Closure listeners, dispatch returns the Closure itself
$closure = Dispatcher::dispatch('app.closure');
$closure();

Dispatcher::dispatch('before');
Attach an observer
Dispatcher::attachObserver('before', [TestController::class, 'before']);
Dispatcher::attachObserver('closure', ['closure', function () {
    Rudra::config()->set(['closure' => 'closure']);
}]);

$test = new TestController();
Dispatcher::attachObserver('subscriberObject', [$test, 'subscriberObject'], 123);
Detach an observer
Dispatcher::detachObserver('before', TestController::class);
Notify the observers
Dispatcher::notify('before');
Dispatcher::notify('closure');
Dispatcher::notify('subscriberObject');
Get all listeners / observers
Dispatcher::getListeners();
Dispatcher::getObservers();

License

This project is licensed under the Mozilla Public License 2.0 (MPL-2.0) — a free, open-source license that:

  • Requires preservation of copyright and license notices,
  • Allows commercial and non-commercial use,
  • Requires that any modifications to the original files remain open under MPL-2.0,
  • Permits combining with proprietary code in larger works.

📄 Full license text: LICENSE
🌐 Official MPL-2.0 page: https://mozilla.org/MPL/2.0/