(PHP 8 >= 8.4.0)
ReflectionProperty::setRawValue — Define o valor de uma propriedade, ignorando um gancho de configuração se definido
Define o valor de uma propriedade, ignorando um gancho set
, se definido.
object
value
Nenhum valor é retornado.
Se a propriedade for virtual, um Error será gerado, pois não há valor bruto para definir.
Exemplo #1 Exemplo 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');
// Eles passariam pelo gancho set e lançariam uma exceção.
try {
$example->age = -2;
} catch (InvalidArgumentException) {
echo "InvalidArgumentException por definir a propriedade para -2\n";
}
try {
$rProp->setValue($example, -2);
} catch (InvalidArgumentException) {
echo "InvalidArgumentException por usar ReflectionProperty::setValue() com -2\n";
}
// Mas isso definiria $age como -2 sem erro.
$rProp->setRawValue($example, -2);
echo $example->age;
?>
O exemplo acima produzirá:
InvalidArgumentException por definir a propriedade para -2 InvalidArgumentException por usar ReflectionProperty::setValue() com -2 -2