Vorangegangene Teile:
- Teil 1: Einführung und ReflectionClass
- Teil 2: ReflectionMethod und ReflectionFunction
- Teil 3: ReflectionParameter
Nun sind also die Properties dran, womit dann der vierteilige Reflection-Ausflug auch schon beendet ist. Wie bekannt beginnen wir wieder mit einem Mustercode
class D { /** * this is a property */ public $prop = array("a","b","c"); }
Property erhalten
Der Weg um an das ReflectionProperty – Objekt zu kommen führt uns über das ReflectionClass – Objekt der Klasse.
$refclass = new ReflectionClass("D"); $refprop = $refclass->getProperty("prop");
DocBlock – Kommentar
print_r($refprop->getDocComment()); /** * this is a property */
Property-Name
print $refprop->getName(); //prop
Property-Value
Hierbei erwartet getValue eine Instanz der Klasse als Parameter. Falls es sich um ein statisches Property handelt, ist hier null zu verwenden.
print_r($refprop->getValue(new D)); /* Array ( [0] => a [1] => b [2] => c ) */
Handelt es sich nicht um ein Public oder ein Protected – Property, fliegt eine ReflectionException.
Handelt es sich um ein Default-Property?
Steht das Property direkt im Code (zur „Compilezeit“ bekannt) oder kam es erst zur Laufzeit hinzu ($this->newProperty = …)?
var_dump($refprop->isDefault()); //bool(true)
Modifier prüfen
Weitere Funktionen, die ebenfalls einen booleschen Wert zurückliefern sind hier: isPrivate, isProtected, isStatic.
var_dump($refprop->isPublic()); //bool(true)
Das wars!
Es sei abschließend noch erwähnt, dass alle oben gemachten Aussasgen auch für statische Properties gültig sind. Wie in den anderen Teilen auch ist dies hier keine vollständige Auflistung, dafür schaut ihr am Besten direkt im Handbuch nach.
Und damit wars das mit der Reihe über die Reflection – hoffe ihr habt was mitgenommen!
7 Antworten auf Reflection – Teil 4: ReflectionProperty