Ваш код возвращает ошибку из-за этих строк:
if(method_exists($this, $getter))
return isset($this->$getter());
Вы можете просто заменить его на:
if (!method_exists($this), $getter) {
return false; // method does not exist, assume no property
}
$getter_result = $this->$getter();
return isset($getter_result);
и он вернет false, если получатель не определен или вернет NULL
. Я предлагаю вам лучше подумать о том, как определить, какое свойство установлено или нет.
Приведенный выше код также предполагает, что вы создаете геттеры для всех ваших свойств, поэтому , когда нет геттера, свойство считается не установленным .
Кроме того, почему вы используете геттеры? Кажется, они здесь излишни.