在 PHP 中获得常量可见性
Get const visibility in PHP
从PHP 7.1开始,他们引入了常量可见性,我需要仔细阅读它。我就这样创建了 ReflectionClass
:
$rc = new ReflectionClass(static::class);
函数 getConstants()
return 是一个 name/value 映射,getConstant($name)
只是它的值。两者都没有 return 可见性信息。难道不应该有一个类似于函数、属性等的ReflectionConst
class吗?
还有其他方法可以获取这些信息吗?
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)
从PHP 7.1开始,他们引入了常量可见性,我需要仔细阅读它。我就这样创建了 ReflectionClass
:
$rc = new ReflectionClass(static::class);
函数 getConstants()
return 是一个 name/value 映射,getConstant($name)
只是它的值。两者都没有 return 可见性信息。难道不应该有一个类似于函数、属性等的ReflectionConst
class吗?
还有其他方法可以获取这些信息吗?
the feature's RFC 中提到了对此的反射更改,但我不知道它们是否已在其他地方记录。
新的 class 是 ReflectionClassConstant
以及相关方法(以及其他):
isPublic()
isPrivate()
isProtected()
ReflectionClass
有两个新方法:
getReflectionConstants()
- returns 一组 ReflectionClassConstantsgetReflectionConstant()
- 按名称检索 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)