ReflectionProperty::setRawValue

Sets the value of a property, bypassing a set hook if defined

説明

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

Sets the value of a property, bypassing a set hook if defined.

パラメータ

object
The object on which to set the property value.
value
The value to write. It must still be valid according to the property's type.

戻り値

値を返しません。

エラー / 例外

If the property is virtual, an Error will be thrown, as there is no raw value to set.

例1 ReflectionProperty::setRawValue example

<?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');

// These would go through the set hook, and throw an exception.
try {
    $example->age = -2;
} catch (InvalidArgumentException) {
    echo "InvalidArgumentException for setting property to -2\n";
}
try {
    $rProp->setValue($example, -2);
} catch (InvalidArgumentException) {
    echo "InvalidArgumentException for using ReflectionProperty::setValue() with -2\n";
}

// But this would set the $age to -2 without error.
$rProp->setRawValue($example, -2);
echo $example->age;
?>

上の例の出力は以下となります。

InvalidArgumentException for setting property to -2
InvalidArgumentException for using ReflectionProperty::setValue() with -2
-2