listeners[spl_object_hash($obj)] = $obj; return $this; } /** * Detach an observer from the object. * * @chainable * @param object Event_Observer * @return object */ public function detach(SplObserver $obj) { // Remove the listener unset($this->listeners[spl_object_hash($obj)]); return $this; } /** * Notify all attached observers of a new message. * * @chainable * @param mixed message string, object, or array * @return object */ public function notify($message) { foreach ($this->listeners as $obj) { $obj->notify($message); } return $this; } } // End Event Subject