On Thu, Apr 24, 2008 at 10:41:05AM -0400, Eric Butera wrote:
> I can't show you the code because I wrote it on company time therefore
> I don't own it.
>
> A very generalized example.
>
> Register events:
> $events = array(
> array('event'=>'onSave', 'class'=>'localEvents',
> 'method'=>'handleOnSave')
> );
> $dispatcher = namespace_registry::get('dispatcher');
> $dispatcher->lazyRegister($events);
>
>
> Sample save page:
> $record = new record;
> $record->name = 'Eric Butera'
> $isSuccess = $record->save();
> $dispatcher->trigger('onSave', $record, array('isSuccess'=>$isSuccess));
>
>
> Upon firing, the dispatcher would check to see if any lazy registrants
> exist for the onSave event. If some exist, then it will then use the
> configured settings to somehow load & call the defined class/method
> and inject it with an event notification object.
>
> Sample event handler:
> class localEvents {
> public function handleOnSave(namespace_Event $event) {
> echo "An onsave event is being handled, triggered in subject
> class ". get_class($event->getSubject()) ."\n";
> $info = $event->getInfo();
> if ($info['isSuccess'] === true) {
> // do something else!
> }
> }
> }
>
>
> Why is this useful? Because you can add functionality to your save
> page without touching it. This is very powerful when you have a
> shared code base and need to add some parts to it without breaking
> other sites. Since it is expected that events will be registered it
> is okay to rely on this functionality always being there rather than
> the internals of your app changing and creating nightmares.
That is a beatiful example of the observer pattern.
--
Nick Stinemates ([EMAIL PROTECTED])
http://nick.stinemates.org
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php