访问类外部的受保护成员变量
我通过访问某人已经放置的类函数来查询字段的ID。结果是返回了一个包含受保护成员变量的对象。我正在努力了解如何访问类外的成员变量值。
我通过访问某人已经放置的类函数来查询字段的ID。结果是返回了一个包含受保护成员变量的对象。我正在努力了解如何访问类外的成员变量值。
从公共访问受保护或私有变量是不正确的(这就是为什么它们是受保护的或私有的)。因此,更好的是扩展类并访问所需的属性,或者使getter方法公开获取它。但是,如果您仍然想在不扩展的情况下获取属性,并且如果您使用的是 PHP 5,则可以使用 Reflection 类进行访问。实际上尝试反射属性类。
class Foo { protected $bar; }
$foo = new Foo();
$rp = new ReflectionProperty('Foo', 'bar');
$rp->setAccessible(true);
echo $rp->getValue($foo);
这是正确的答案:
我们可以使用闭包类的 bind() 或 bindTo 方法来访问某个类的私有/受保护数据,例如:
class MyClass {
protected $variable = 'I am protected variable!';
}
$closure = function() {
return $this->variable;
};
$result = Closure::bind($closure, new MyClass(), 'MyClass');
echo $result(); // I am protected variable!