ReflectionProperty::setRawValue
set フックが定義されていたとしても、それを迂回してプロパティの値を設定する
説明
public void ReflectionProperty::setRawValue(object $object, mixed $value)
set フックが定義されていたとしても、それを迂回してプロパティの値を設定します。
パラメータ
-
object
-
プロパティの値を設定するオブジェクト
-
value
-
書き込む値。
プロパティの型に対応した、正しい値でなければなりません。
エラー / 例外
プロパティが仮想プロパティの場合、
Error がスローされます。
なぜなら、設定する生の値がないからです。
例
例1 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');
// フックを経由して値を設定し、例外がスローされます
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";
}
// しかし、下記は $age に -2 を設定してもエラーが発生しません。
$rProp->setRawValue($example, -2);
echo $example->age;
?>
InvalidArgumentException for setting property to -2
InvalidArgumentException for using ReflectionProperty::setValue() with -2
-2