2017-05-31 6 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には値がどこから来るかを知る方法がありません。

本当に知りたいのであれば、注釈(ドキュメントコメント)を使用してリフレクションでそれらを取得することができます。

関連する問題