(PHP 8 >= 8.4.0)
ReflectionProperty::setRawValue — Définit la valeur d'une propriété, en contournant un hook de définition s'il est défini
Définit la valeur d'une propriété, en contournant un set
hook s'il est défini.
object
value
Aucune valeur n'est retournée.
Si la propriété est virtuelle, une Error sera lancée, car il n'y a pas de valeur brute à définir.
Exemple #1 Exemple de ReflectionProperty::setRawValue()
<?php
class Example
{
public int $age {
set {
if ($value <= 0) {
throw new \InvalidArgumentException();
}
$this->age = $value;
}
}
}
$example = new Example();
$rClass = new \ReflectionClass(Example::class);
$rProp = $rClass->getProperty('age');
// Ceci passerait par le hook set, et lancerait une exception.
$example->age = -2;
try {
$example->age = -2;
} catch (InvalidArgumentException) {
print "InvalidArgumentException for setting property to -2\n";
}
try {
$rProp->setValue($example, -2);
} catch (InvalidArgumentException) {
print "InvalidArgumentException for using ReflectionProperty::setValue() with -2\n";
}
// Mais cela définirait $age à -2 sans erreur.
$rProp->setRawValue($example, -2);
echo $example->age;
?>
L'exemple ci-dessus va afficher :
InvalidArgumentException for setting property to -2 InvalidArgumentException for using ReflectionProperty::setValue() with -2 -2