ReflectionProperty::setRawValue

(PHP 8 >= 8.4.0)

ReflectionProperty::setRawValueSets the value of a property, bypassing a set hook if defined

说明

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

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
添加备注

用户贡献的备注

此页面尚无用户贡献的备注。
To Top