I am starting developing with Symfony2 framework and I like to use the Eventdispatcher. Now I have three questions I could find an answer with google yet.
-
Where I place the dispatcher so it is accessable from everywhere in
tha app? -
How I can configure customevents? Should I place all in one file or
one for each bunble? -
How much effort is it to configure it with annotations, i.e
@Event("some.event")? Is that possible?
General
I might suggest the Symfony 2 documentation on the EventDispatcher as a good starting point, assuming that you mean you wish to provide custom events rather than a custom event dispatcher.
Symfony2 Internals – The Event Dispatcher
Location of Events
In terms of location, an ‘Event’ folder within the appropriate bundle is a good choice. It is likely that the actual dispatching of the event will take place only within the bundle context, whereas listeners may reside elsewhere. This is however a separate topic and of minimal relevance as they simply subscribe to the event’s string-name (e.g., ‘store.order’ to borrow the documentation’s example) and only require knowledge of the Event’s interface/type.
So you might have an Event called ‘Foo’ within the ‘Bar’ bundle in ‘Zap’ namespace:
When you then come to dispatch an event from within your bundle, you might choose to use the event identifier ‘zap.bar.foo’, and of course you can then register listeners from elsewhere to be notified on this identifier as you see fit.
Accessing the Event Dispatcher
Where you wish to access the primary EventDispatcher instance, acquire access to the Dependency Injection Container and retrieve the ‘event_dispatcher’ service. A simple approach is to have your class extend ‘ContainerAware’ and then retrieve the dispatcher with