Listeners in the framework implement the observer pattern, as described at http://en.wikipedia.org/wiki/Observer_pattern. A listener object waits to be notified of a new event. If notified, it will then check if the event can be handled, and if so, it will run the event-handling method based on the event name.
In CakePHP, anything can be a listener; the only requirement is to implement the
CakeEventListener interface and provide a public
implementedEvents() method, which returns the names of the exposed events with their respective methods to process the event.
If you have significant processing logic in your event listeners for a live service, consider using a job queue. Refer to the Event stacking recipe later in this chapter.
In this recipe, we identified some e-mail sending logic in one of our models as a candidate to use events. Decoupling the e-mail processing logic from the model itself allows us to switch the event processing implementation in the future to...