protected function setAttributeDirectly($name, $value) { $oldValue = $this->getAttributeDirectly($name); parent::setAttributeDirectly($name, $value); foreach ($this->listeners as $listener) { $listener->attributeChanged($this, $name, $oldValue); } }