update($caller); } /** * Updates the observer subject with a new caller. * * @chainable * @param object Event_Subject * @return object */ public function update(SplSubject $caller) { if ( ! ($caller instanceof Event_Subject)) throw new Kohana_Exception('event.invalid_subject', get_class($caller), get_class($this)); // Update the caller $this->caller = $caller; return $this; } /** * Detaches this observer from the subject. * * @chainable * @return object */ public function remove() { // Detach this observer from the caller $this->caller->detach($this); return $this; } /** * Notify the observer of a new message. This function must be defined in * all observers and must take exactly one parameter of any type. * * @param mixed message string, object, or array * @return void */ abstract public function notify($message); } // End Event Observer