Php 神奇的方法+;反射API=can';不要研究类属性。为什么?
如果我用魔法的方法。在使用反射API时,我无法调查类属性。。为什么会这样 编辑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?请不要告诉我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”的基本用途。。它不符合上面的规定吗?