abacaphiliac/events-capable

Provides a config-based initializer that attaches listeners to implementations of \Zend\EventManager\EventsCapableInterface.

0.2.1 2016-04-12 04:51 UTC

This package is auto-updated.

Last update: 2024-03-25 10:37:53 UTC


README

Scrutinizer Code Quality Code Coverage Build Status

abacaphiliac/events-capable

Tired of writing backwards-compatible logic in all of your factory code to wire up listeners? Is your service implementation registered with Zend's service manager? Then this package might be right for you!

This package provides a config-based initializer that attaches listeners to implementations of \Zend\EventManager\EventsCapableInterface. When the service concrete is instantiated by service manager, it will pass through the initializer provided by this package. If your service is Events Capable, then the initializer will check the config for registered listeners to attach to the service's event manager.

Installation

Install the latest version with

composer require abacaphiliac/events-capable

Basic Usage (Configuration)

  1. Update service_manager config.
    1. Add initializer.
    2. Add listener.
  2. Update abacaphiliac/events-capable config:
    1. Add \Zend\EventManager\EventsCapableInterface implementation.
    2. Add \Zend\EventManager\ListenerAggregateInterface implementation.

Configuration Examples

Update service_manager config:

return [
    'service_manager' => [
        'factories' => [
            \MyListener::class => \MyListenerFactory::class,
        ],
        'initializers' => [
            \abacaphiliac\EventsCapable\EventsCapableInitializer::class,
        ],
    ],
];

Update abacaphiliac/events-capable config:

return [
    'abacaphiliac/events-capable' => [
        'eventsCapable' => [
            \MyEventsCapableService::class => [
                \MyListener::class,
            ],
        ],
    ],
];

Contributing

composer install && vendor/bin/phing

This library attempts to comply with PSR-1, PSR-2, and PSR-4. If you notice compliance oversights, please send a patch via pull request.