davedevelopment/pimple-aware-event-dispatcher

There is no license information available for the latest version (3.0) of this package.

A Symfony compatible event dispatcher that allows services to be lazy loaded from an instance of the Pimple DI container

3.0 2018-02-23 08:26 UTC

README

Installation

composer.phar require "davedevelopment/pimple-aware-event-dispatcher:*@dev"

Usage

To use in a Silex application:

<?php

use PimpleAwareEventDispatcher\PimpleAwareEventDispatcher;
use Silex\Application;
use Symfony\Component\EventDispatcher\EventDispatcher;

$app = new Application;

// define the dispatcher
$app['event_dispatcher'] = function () use ($app) {
    $dispatcher = new EventDispatcher();
    return new PimpleAwareEventDispatcher($dispatcher, $app);
};

// define our application services
$app['some.service'] = function() use ($app) {
    // let's assume this takes a bit of doing and/or is dependant on several other
    // services
    sleep(1);
    return new SomeService;
};

// add a listener, that will lazily fetch the service when needed
$app['event_dispatcher']->addListenerService(
    "some.event",
    array("some.service", "serviceMethod")
);