5.10.18 Réflexion
5.10 Les classes et les objets (PHP 5)
5 Référence du langage
Manuel PHP
. Introduction . ReflectionFunction . ReflectionParameter . ReflectionClass . ReflectionMethod ->ReflectionProperty . ReflectionExtension . Extension des classes de réflexion
|
5.10.18.6 ReflectionProperty
La classe
ReflectionProperty
vous permet
de faire du
reverse-engineer
sur les propriétés des
classes.
<?php class ReflectionProperty implements Reflector { final private __clone() public __construct(mixed class, string name) public string __toString() public static string export() public string getName() public bool isPublic() public bool isPrivate() public bool isProtected() public bool isStatic() public bool isDefault() public int getModifiers() public mixed getValue(stdclass object) public void setValue(stdclass object, mixed value) public ReflectionClass getDeclaringClass() } ?>
|
Pour connaître le fonctionnement d'une propriété, vous devez d'abord créer une instance
de la classe
ReflectionProperty
. Vous pourrez ainsi
appeler n'importe quelles méthodes de cette instance.
Utilisation de la classe ReflectionProperty |
<?php class String { public $length = 5; }
// Création d'une instance de la classe ReflectionProperty $prop = new ReflectionProperty('String', 'length');
// Affichage d'informations basiques printf( "===> Les propriétés %s%s%s%s '%s' (qui a %s)\n". " a les modificateurs %s\n", $prop->isPublic() ? ' public' : '', $prop->isPrivate() ? ' private' : '', $prop->isProtected() ? ' protected' : '', $prop->isStatic() ? ' static' : '', $prop->getName(), $prop->isDefault() ? 'déclaré au moment de la compilation' : 'créé au moment de l\'exécution', var_export(Reflection::getModifierNames($prop->getModifiers()), 1) );
// Création d'une instance de String $obj= new String();
// Récupération de la valeur courante printf("---> La veleur est : "); var_dump($prop->getValue($obj));
// Modification de la valeur $prop->setValue($obj, 10); printf("---> Définition de la valeur à 10, la nouvelle valeur est : "); var_dump($prop->getValue($obj));
// Affichage de l'objet var_dump($obj); ?>
|
Note |
Essayer de récupérer ou définir les valeurs des propriétés d'une classe
privée ou protégée produira une exception.
|
|