Zend_Notification provides an infrastructure to relay messages between objects that don't necessarily know eachother. An implementation of this proposal is available in Zym.
Proposed Component Name
1.4 - 11 march 2008: updated class skeletons and text
1.3 - 20 februari 2008: Updated link and added another usecase
1.2 - 3 January 2008: Added some use cases, operation description and updated skeletons
1.1 - 30 December 2007: Refactoring and renaming
1.0 - 29 December 2007: Setting up first draft (wiki revision: 27)
This provides a loose coupling between components and makes your app more flexible.
Zend_Notification provides an infrastructure to relay messages between objects that don't necessarily know eachother.
An implementation of this proposal is available in Zym.
- This component must provide a clean, non-intrusive way to handle event notification
- Must not require existing classes to implement interfaces or extend classes for it to work
The operation is very simple, but also very powerful. You can attach an object to a notification by calling the Notification's attach() method.
This method takes the observer and the name of the notification as argument. More than one object can register to the same notification.
When a notification is sent, all objects that subscribed to that notification will be notified in order of subscription.
By default the observer's notify() method will be called. You can also register another method when registering the observering at the notification center.
The Notification constructor takes three arguments (of which the last is optional). The first is the name of the notification. The second is (usually) the object than sent the notification.
The last argument is an array that allows for extra data to be sent along with the notification.
When attaching an observer to an event you can either use a string to attach it to just one event, or provide an array with multiple event names. (See usecase UC-02)
When you attach an observer to an event with an asterisk in the name, the asterisk will be used as wildcard. See usecase UC-03 for an example.
- Milestone 1: [DONE] finish this proposal
- Milestone 2: [DONE] write documentation
- Milestone 3: [DONE] write unit tests
- Milestone 4: get approval and move the component to incubator
- Milestone 5: finish component and move it to core