phpnomad/symfony-event-dispatcher-integration

Integrates PHPNomad's event architecture with Symfony's event dispatcher.

Maintainers

Package info

github.com/phpnomad/symfony-event-dispatcher-integration

Homepage

Type:package

pkg:composer/phpnomad/symfony-event-dispatcher-integration

Statistics

Installs: 146

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 2

1.1.1 2026-03-31 15:28 UTC

README

Latest Version Total Downloads PHP Version License

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 EventStrategy implementation that wraps each PHPNomad event in a Symfony-compatible event object and dispatches it through EventDispatcherInterface. attach() supports priorities, and listener callables receive the original PHPNomad event rather than the Symfony wrapper.
  • An ActionBindingStrategy implementation 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 Initializer class that registers both strategies with the DI container and binds Symfony's EventDispatcher to EventDispatcherInterface.

Requirements

  • phpnomad/event for the interfaces being implemented
  • phpnomad/di and phpnomad/loader for container wiring
  • symfony/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.