&$observer, 'eventID'=>$eventID)); } } /** * method used to detach an observer from the notifier object * @param object * @param array */ function detach($observer, $eventIDArray) { foreach($eventIDArray as $eventID) { $nameHash = md5(get_class($observer).$eventID); base::unsetStaticObserver($nameHash); } } /** * method to notify observers that an event as occurred in the notifier object * * @param string The event ID to notify for * @param array paramters to pass to the observer, useful for passing stuff which is outside of the 'scope' of the observed class. */ function notify($eventID, $paramArray = array()) { $observers = & base::getStaticObserver(); if (!is_null($observers)) { foreach($observers as $key=>$obs) { if ($obs['eventID'] == $eventID) { $obs['obs']->update($this, $eventID, $paramArray); } } } } function & getStaticProperty($var) { static $staticProperty; return $staticProperty; } function & getStaticObserver() { return base::getStaticProperty('observer'); } function & setStaticObserver($element, $value) { $observer = & base::getStaticObserver(); $observer[$element] = $value; } function & unsetStaticObserver($element) { $observer = & base::getStaticObserver(); unset($observer[$element]); } }