有没有办法检查我是否已将ReflectionProperty设置为可访问?
class Foo {
private $baz = 'bar';
}
$foo = new Foo();
$prop = new ReflectionProperty($foo, 'baz');
$prop->setAccessible(true);
在设置辅助功能之前和之后,执行$prop->isPrivate();
将返回true
(如预期的那样)。有没有办法告诉我已经将可访问性设置为true?
documentation在ReflectionProperty类中没有显示类似$accessible
属性的内容,因此我不确定它是如何使其可访问的,除非它在Foo
类上完成
答案 0 :(得分:0)
您可以在try-catch块中使用以下方法:
ReflectionProperty::getValue
如果属性不可访问,则抛出ReflectionException。您可以 使用可以访问受保护或私人财产 ReflectionProperty :: setAccessible()。
文档链接:
http://php.net/manual/en/reflectionproperty.getvalue.php
代码:
function isPropertyAccessible($property){
$result = true;
try{
ReflectionProperty::getValue($property);
}
catch(ReflectionException $e){
$result = false;
}
return $result;
}