Reflection – Teil 4: ReflectionProperty

Vorangegangene Teile:

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!


Deprecated: Directive 'allow_url_include' is deprecated in Unknown on line 0