2017-05-31 53 views
0

我需要能够检索属性默认值常量名称。 例如,有这样的类:PHP:使用Reflection API获取属性默认值常量名称

class Foo 
{ 
    const BAR = 'BAR'; 
    private $baz = self::BAR; 
} 

我希望能够做类似如下:

$reflection = new \ReflectionClass(Foo::class); 
$reflection->getProperty('baz')->getDefaultValueConstantName(); // 'Foo::BAR' 

关于PHP反射API奇怪的是,\ReflectionParameter类有方法getDefaultValueConstantName(),但\ReflectionProperty才不是。我可以使用\ReflectionClass::getDefaultProperties()获取属性默认值,但是此方法将返回属性默认值,而不是此值取自常量名称。 是否有任何解决方案获取属性默认值常量名称,并且此功能至少是为下一版本的PHP计划的?

回答

0

这似乎不可能。

当你做private $baz = self::BAR;,你分配(只)常量self :: BAR的值,而不是引用。在那之后,Reflection就没有办法知道价值从何而来。

如果你真的想知道,你可以使用注释(doc注释)并通过反射来检索它们。