public function attach(Observer $observer)
{
$className = get_class($observer);
// Make sure this observer is not already registered
if (isset($this->observers[$className])) {
return $this;
}
// Attach observer
$this->observers[$className] = $observer;
// Register the observable events
$events = $observer->getObservableEvents();
foreach ($events as $event) {
$event = strtolower($event);
if (!isset($this->events[$event])) {
$this->events[$event] = array($className);
} else {
$this->events[$event][] = $className;
}
}
return $this;
}