phpnomad / symfony-event-dispatcher-integration
Integrates PHPNomad's event architecture with Symfony's event dispatcher.
Package info
github.com/phpnomad/symfony-event-dispatcher-integration
Type:package
pkg:composer/phpnomad/symfony-event-dispatcher-integration
Requires
- phpnomad/di: ^2.0
- phpnomad/event: ^1.0
- phpnomad/loader: ^1.0 || ^2.0
- symfony/event-dispatcher: ^7.1
This package is auto-updated.
Last update: 2026-04-10 02:13:00 UTC
README
Integrates Symfony's EventDispatcher component with PHPNomad's event abstraction. It provides concrete EventStrategy and ActionBindingStrategy implementations that satisfy the interfaces defined in phpnomad/event, so application code that dispatches or listens for events keeps depending on the PHPNomad contracts while the underlying work goes through Symfony's dispatcher. This is the recommended implementation for PHPNomad applications that are not running inside a host platform with its own event system.
Installation
composer require phpnomad/symfony-event-dispatcher-integration
Composer pulls in phpnomad/event, phpnomad/di, phpnomad/loader, and symfony/event-dispatcher transitively.
What This Provides
- An
EventStrategyimplementation that wraps each PHPNomad event in a Symfony-compatible event object and dispatches it throughEventDispatcherInterface.attach()supports priorities, and listener callables receive the original PHPNomad event rather than the Symfony wrapper. - An
ActionBindingStrategyimplementation that binds an arbitrary action name to a PHPNomad event class, with an optional transformer callable for shaping the event instance from the action arguments. - An
Initializerclass that registers both strategies with the DI container and binds Symfony'sEventDispatchertoEventDispatcherInterface.
Requirements
phpnomad/eventfor the interfaces being implementedphpnomad/diandphpnomad/loaderfor container wiringsymfony/event-dispatcher^7.1 for the underlying dispatcher
All four are declared as direct dependencies, so Composer installs them automatically.
Usage
Add the integration's Initializer to your PHPNomad bootstrapper alongside your application initializers. The loader picks up its class definitions and binds both strategies to their PHPNomad interfaces.
<?php use MyApp\MyAppInitializer; use PHPNomad\Di\Container\Container; use PHPNomad\Loader\Bootstrapper; use PHPNomad\Symfony\Component\EventDispatcherIntegration\Initializer as SymfonyEventDispatcherInitializer; $container = new Container(); $bootstrapper = new Bootstrapper( $container, new MyAppInitializer(), new SymfonyEventDispatcherInitializer(), ); $bootstrapper->load();
Once the bootstrapper runs, any service that depends on PHPNomad\Events\Interfaces\EventStrategy or PHPNomad\Events\Interfaces\ActionBindingStrategy resolves to the Symfony-backed implementation. Your domain code continues to depend on the PHPNomad interfaces and does not reference Symfony directly.
Documentation
Full PHPNomad documentation lives at phpnomad.com. For the underlying dispatcher, see the Symfony EventDispatcher component.
License
Released under the MIT License.