Используя магические методы для доступа к свойствам, эти свойства обычно не будут присутствовать в определении класса.
Определение вашего класса в целом будет выглядеть так:
class MyClass {
private $data;
public function __get($name) {
return $this->data[$name];
}
public function __set($name, $value) {
$this->data[$name] = $value;
}
}
Поскольку нет реальных свойств - существует только массив $data
, который будет использоваться магическими методами __get
__set
как большое хранилище данных - они не могутбыть замеченным API Reflection.
Это одна из проблем, вызванных использованием магических методов: они используются для доступа к свойствам (или методам с __call
) , которых там нет -- и Reflection API может видеть только то, что там есть.