(PHP 5, PHP 7)
ReflectionProperty::__construct — Construit un nouvel objet ReflectionProperty
Cette fonction n'est pas documentée et seule la liste des arguments est disponible.
class
Le nom de la classe, qui contient la propriété.
name
Le nom de la propriété à refléter.
Aucune valeur n'est retournée.
Le fait de tenter de récupérer ou définir la valeur d'une propriété privée ou protégée d'une classe émettra une exception.
Exemple #1 Exemple avec ReflectionProperty::__construct()
<?php
class Str
{
public $length = 5;
}
// Création d'une instance de la classe ReflectionProperty
$prop = new ReflectionProperty('Str', 'length');
// Affichage de quelques informations
printf(
"===> The%s%s%s%s property '%s' (which was %s)\n" .
" having the modifiers %s\n",
$prop->isPublic() ? ' public' : '',
$prop->isPrivate() ? ' private' : '',
$prop->isProtected() ? ' protected' : '',
$prop->isStatic() ? ' static' : '',
$prop->getName(),
$prop->isDefault() ? 'declared at compile-time' : 'created at run-time',
var_export(Reflection::getModifierNames($prop->getModifiers()), 1)
);
// Création d'une instance de Str
$obj= new Str();
// Récupère la valeur courante
printf("---> Value is: ");
var_dump($prop->getValue($obj));
// Modifie la valeur
$prop->setValue($obj, 10);
printf("---> Setting value to 10, new value is: ");
var_dump($prop->getValue($obj));
// Affiche l'objet
var_dump($obj);
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
===> The public property 'length' (which was declared at compile-time) having the modifiers array ( 0 => 'public', ) ---> Value is: int(5) ---> Setting value to 10, new value is: int(10) object(Str)#2 (1) { ["length"]=> int(10) }
Exemple #2 Récupération d'une valeur depuis une propriété privée ou protégée en utilisant la classe ReflectionProperty
<?php
class Foo {
public $x = 1;
protected $y = 2;
private $z = 3;
}
$obj = new Foo;
$prop = new ReflectionProperty('Foo', 'y');
$prop->setAccessible(true); /* Depuis PHP 5.3.0 */
var_dump($prop->getValue($obj)); // int(2)
$prop = new ReflectionProperty('Foo', 'z');
$prop->setAccessible(true); /* Depuis PHP 5.3.0 */
var_dump($prop->getValue($obj)); // int(2)
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
int(2) int(3)