(PHP 8 >= 8.4.0)
ReflectionProperty::setRawValue — Define la valor de una propiedad, omitiendo un hook de definición si está definido
Define la valor de una propiedad, omitiendo un hook set si está definido.
objectEl objeto sobre el cual definir la valor de la propiedad.
valueLa valor a escribir. Debe ser siempre válida según el tipo de la propiedad.
No se retorna ningún valor.
Si la propiedad es virtual, se lanzará una Error, ya que no hay valor bruto a definir.
Ejemplo #1 Ejemplo 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');
// Esto pasaría por el hook set, y lanzaría una excepción.
$example->age = -2;
try {
$example->age = -2;
} catch (InvalidArgumentException) {
print "InvalidArgumentException para establecer la propiedad en -2\n";
}
try {
$rProp->setValue($example, -2);
} catch (InvalidArgumentException) {
print "InvalidArgumentException para usar ReflectionProperty::setValue() con -2\n";
}
// Pero esto establecería $age a -2 sin error.
$rProp->setRawValue($example, -2);
echo $example->age;
?>El ejemplo anterior mostrará:
InvalidArgumentException para establecer la propiedad en -2 InvalidArgumentException para usar ReflectionProperty::setValue() con -2 -2