ReflectionMethod
<<<
ReflectionProperty ReflectionExtension
>>>

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.

<< ReflectionProperty >>
ReflectionMethod Réflexion ReflectionExtension