在PHP中获得const可见性

问题描述:

自PHP 7.1以来,他们引入了const可见性,我需要通过反射来读取它。我去就创建我ReflectionClass这样的:在PHP中获得const可见性

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

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

是否有任何其他方式获取此信息?

对此的反射改变在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) 
+0

它的工作原理perfectl哟,谢谢!我希望他们没有记录在任何地方的事实会让我感到惊讶,但事实并非如此。 – MMauro