【发布时间】:2014-09-27 00:05:21
【问题描述】:
我有课Filter:
class Filter
{
private static $filters = array('foo', 'bar');
public function getFilters()
{
return self::$filters;
}
}
这个类没有$filters 的设置器,但我需要更改它的值。在我看来,反射是实现这一目标的好方法,所以我尝试了:
$filter = new Filter(); // Create instance of my object
$reflection = new ReflectionObject($filter); // Create its reflection
$filters = $reflection->getProperty('filters'); // Get property reflection ...
$filters->setAccessible(true); // ... and set it to public
$filters->setValue(null, array()); // Set new value
现在,$filters 应该是空的,但是当我调用 $filter->getFilters() 时,仍然有旧值。如何告诉班级“使用”我在反射中设置的值?非常感谢!
【问题讨论】:
-
setAccessible和setValue不是反射对象的方法 -
我知道,我在 ReflectionProperty 上给他们打电话。
$filters = $reflection->getProperty('filters');
标签: php reflection properties