Is this the only way to access the magic __set from the parent class: public function __set($columnName, $value) { if ($value !== $this->$columnName) { parent::__set($columnName, $value); } } I would have liked to work this way: public function __set($columnName, $value) { if ($value !== $this->$columnName) { parent::$columnName = $value; } } And another question. There is a self, a static and a parent Why is it only $this and not a $parent too?