Хотя это не отвечает на ваш вопрос, оно затрагивает важный аспект:
Стоит отметить, что вы не должны позволять своим магическим __get
и __set
методам поднять это уведомление. «Лучшей практикой» является использование одного из новых типов исключений SPL, специально разработанных для этой цели. Например:
public function __get($name)
{
if (isset($this->vals[$name])) {
return $this->vals[$name];
} else {
$msg = "Invalid property: '$name' does not exist";
throw new OutOfBoundsException($msg);
}
}
А для __set ...
public function __set($name, $val)
{
if (isset($this->vals[$name])) {
$this->vals[$name] = $val;
} else {
$msg = "Invalid property: '$name' does not exist";
throw new OutOfBoundsException($msg);
}
}
Вот ссылка на полезную статью на тему новых типов исключений SPL.