$name(...$arguments); } // Apparently Doctrine first tries the method with the same // name as the property, instead of with the get prefix if (property_exists($this, $name) && empty($arguments)) { return $this->$name; } if (str_starts_with('set', $name)) { $var = lcfirst(str_replace('set', '', $name)); if (property_exists($this, $var)) { $this->$name = $arguments[0]; } return $this; } throw new \InvalidArgumentException("Undefined method: {$name}"); } }