Php 神奇的方法+;反射API=can';不要研究类属性。为什么?

Php 神奇的方法+;反射API=can';不要研究类属性。为什么?,php,oop,magic-methods,Php,Oop,Magic Methods,如果我用魔法的方法。在使用反射API时,我无法调查类属性。。为什么会这样 编辑 什么是反射API?请不要告诉我php.net我不明白。。用你的话指导我plsss使用神奇的方法访问属性,这些属性通常不会出现在类的定义中 您的类的定义通常如下所示: class MyClass { private $data; public function __get($name) { return $this->data[$name]; } public fu

如果我用魔法的方法。在使用反射API时,我无法调查类属性。。为什么会这样

编辑


什么是反射API?请不要告诉我php.net我不明白。。用你的话指导我plsss使用神奇的方法访问属性,这些属性通常不会出现在类的定义中

您的类的定义通常如下所示:

class MyClass {
    private $data;
    public function __get($name) {
        return $this->data[$name];
    }
    public function __set($name, $value) {
        $this->data[$name] = $value;
    }
}

由于没有真正的属性——只有一个
$data
数组,它将被神奇的方法
\uuu get
一个
\uu set
用作大数据存储——反射API无法看到这些属性


这是使用magic方法引起的问题之一:它们用于访问不存在的属性(或方法,使用
\u call
),反射API只能看到其中的内容。

一个可能的解决方案可能是增加$data的范围以保护:

class MyClass {
    protected $data;
    public function __get($name) {
        return $this->data[$name];
    }
    public function __set($name, $value) {
        $this->data[$name] = $value;
    }
}

通过这种方式,扩展类可以在它们认为合适的时候访问数组,并收集运行时定义的属性。

您能否提供更具体的细节,说明什么不起作用,以及如何实现它?我正在阅读一本书,书中对此进行了说明,并将其标记为Magic Method中的一个限制。。。这就是我所知道的一切…反转并询问关键字“ReflectonAPI”的基本用途。。它不符合上面的规定吗?