(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.
objectL'objet sur lequel définir la valeur de la propriété.
valueLa valeur à écrire. Elle doit toujours être valide selon le type de la propriété.
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.
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