在PHP中获取const可见性

时间:2017-07-06 11:37:11

标签: reflection php-7.1

自PHP 7.1起,他们引入了const可见性,我需要通过反思来阅读它。我尽可能地创建我的ReflectionClass

$rc = new ReflectionClass(static::class);

函数getConstants()返回一个名称/值映射,getConstant($name)只返回其值。两者都不返回可见性信息。不应该有类似于函数,属性等的ReflectionConst类吗?

有没有其他方法可以获取此信息?

1 个答案:

答案 0 :(得分:2)

the feature's RFC中提到了对此的反思变化,但我不知道它们是否已在其他地方记录过。

新课程ReflectionClassConstant包含相关方法(等等):

  • isPublic()
  • isPrivate()
  • isProtected()

ReflectionClass有两种新方法:

  • getReflectionConstants() - 返回ReflectionClassConstants数组
  • getReflectionConstant() - 按名称检索ReflectionClassConstant

示例:

class Foo
{
    private const BAR = 42;
}

$r = new ReflectionClass(Foo::class);

var_dump(
    $r->getReflectionConstants(),
    $r->getReflectionConstant('BAR')->isPrivate()
);

输出:

array(1) {
  [0]=>
  object(ReflectionClassConstant)#2 (2) {
    ["name"]=>
    string(3) "BAR"
    ["class"]=>
    string(3) "Foo"
  }
}
bool(true)