在 PHP 中获得常量可见性

Get const visibility in PHP

从PHP 7.1开始,他们引入了常量可见性,我需要仔细阅读它。我就这样创建了 ReflectionClass

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

函数 getConstants() return 是一个 name/value 映射,getConstant($name) 只是它的值。两者都没有 return 可见性信息。难道不应该有一个类似于函数、属性等的ReflectionConstclass吗?

还有其他方法可以获取这些信息吗?

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

新的 class 是 ReflectionClassConstant 以及相关方法(以及其他):

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

ReflectionClass 有两个新方法:

  • getReflectionConstants() - returns 一组 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)