2017-05-31 105 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註釋)並通過反射來檢索它們。