2017-05-31 3 views
0

Ich muss in der Lage sein, Property-Default-Wert Konstante Name abrufen. Zum Beispiel solche Klasse mit:PHP: Get Property Standardwert Konstantennamen mit Reflection API

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

ich etwas zu tun, wie folgt in der Lage sein:

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

Das Seltsame über PHP Reflection-API ist, dass \ReflectionParameter Klassenmethode hat getDefaultValueConstantName(), aber \ReflectionProperty nicht. Ich kann Property-Standardwert mit \ReflectionClass::getDefaultProperties() erhalten, aber diese Methode gibt den Standardwert der Eigenschaft zurück, nicht den konstanten Namen, aus dem dieser Wert stammt. Gibt es eine Lösung, um den Standardwert für den Property-Standardwert zu erhalten, und ist diese Funktion zumindest für die nächsten Versionen von PHP geplant?

Antwort

0

Dies scheint nicht möglich zu sein.

Wenn Sie private $baz = self::BAR; tun, weisen Sie (nur) den Wert der Konstante self :: BAR zu, keine Referenz. Danach gibt es bei Reflection keine Möglichkeit zu wissen, woher der Wert kommt.

Wenn Sie das wirklich wissen möchten, können Sie vielleicht Anmerkungen (Dok-Kommentare) verwenden und sie durch Reflexion abrufen.