PHP Conference Kansai 2025

ReflectionProperty::setRawValue

(PHP 8 >= 8.4.0)

ReflectionProperty::setRawValueDefine o valor de uma propriedade, ignorando um gancho de configuração se definido

Descrição

public ReflectionProperty::setRawValue(object $object, mixed $value): void

Define o valor de uma propriedade, ignorando um gancho set, se definido.

Parâmetros

object
O objeto no qual o valor da propriedade será definido.
value
O valor a ser escrito. Ele ainda deve ser válido de acordo com o tipo da propriedade.

Valor Retornado

Nenhum valor é retornado.

Erros/Exceções

Se a propriedade for virtual, um Error será gerado, pois não há valor bruto para definir.

Exemplos

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
adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top