我需要能够检索属性默认值常量名称。 例如,有这样的类:
class Foo
{
const BAR = 'BAR';
private $baz = self::BAR;
}
我希望能够做到以下几点:
$reflection = new \ReflectionClass(Foo::class);
$reflection->getProperty('baz')->getDefaultValueConstantName(); // 'Foo::BAR'
PHP Reflection API的一个奇怪之处是\ReflectionParameter
类有方法getDefaultValueConstantName()
,但\ReflectionProperty
没有。我可以使用\ReflectionClass::getDefaultProperties()
获取属性默认值,但此方法将返回属性默认值,而不是此值取自的常量名称。
是否有任何解决方案来获取属性默认值常量名称,并且此功能是否至少计划用于下一版本的PHP?
答案 0 :(得分:0)
这似乎不可能。
当您执行private $baz = self::BAR;
时,您指定(仅)常量self :: BAR的值,而不是引用。在此之后,反射无法知道价值的来源。
如果你真的想知道这一点,你可以使用注释(文档评论)并通过反思来检索它们。