_observers = array(); } /** * Get the state of the JObservable object * * @access public * @return mixed The state of the object * @since 1.5 */ function getState() { return $this->_state; } /** * Update each attached observer object and return an array of their return values * * @access public * @return array Array of return values from the observers * @since 1.5 */ function notify() { // Iterate through the _observers array foreach ($this->_observers as $observer) { $return[] = $observer->update(); } return $return; } /** * Attach an observer object * * @access public * @param object $observer An observer object to attach * @return void * @since 1.5 */ function attach( &$observer) { // Make sure we haven't already attached this object as an observer if (is_object($observer)) { $class = get_class($observer); foreach ($this->_observers as $check) { if (is_a($check, $class)) { return; } } $this->_observers[] =& $observer; } else { $this->_observers[] =& $observer; } } /** * Detach an observer object * * @access public * @param object $observer An observer object to detach * @return boolean True if the observer object was detached * @since 1.5 */ function detach( $observer) { // Initialize variables $retval = false; $key = array_search($observer, $this->_observers); if ( $key !== false ) { unset($this->_observers[$key]); $retval = true; } return $retval; } }