/** * Configuration magic * * @param string $var name of property to set with value * @param mixed $value value * * @return void */ public function __set($var, $value) { // check what domain parameter it is $domain = substr($var, 0, 3); if (strlen($var) > 3 && $var[3] === strtoupper($var[3]) && 0 === strcmp($domain, strtolower($domain))) { // it is valid domain $variableName = substr($var, 3); $setterName = $domain . "Set" . $variableName; if (method_exists($this, $setterName)) { // there is dedicated setter function for this option $this->{$setterName}($value); return; } $variableName[0] = strtolower($variableName[0]); $setterName = "set" . ucfirst($domain) . "Param"; if (method_exists($this, $setterName)) { // there is setter function for this domain $this->{$setterName}($variableName, $value); return; } } // not a domain property parent::__set($var, $value); }