ReflectionProperty::setRawValue

(PHP 8 >= 8.4.0)

ReflectionProperty::setRawValueУстанавливает значение свойству в обход хука set, если такой хук определили

Описание

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

Метод устанавливает значение свойству в обход хука set, если хук записи определили.

Список параметров

object
Объект, свойству которого требуется установить значение.
value
Значение, которое требуется записать свойству. К допустимым относятся только те значения, которые соответствуют типу свойства.

Возвращаемые значения

Функция не возвращает значения после выполнения.

Ошибки

При попытке установить значение виртуальному свойству метод выбросит ошибку Error, поскольку движок PHP не предусматривает хранилище для значений виртуальных свойств.

Примеры

Пример #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');

// Следующие попытки установить значение свойству пройдут через хук set и выбросят исключение
try {
$example->age = -2;
} catch (
InvalidArgumentException) {
echo
"При установке свойству значения -2 хук выбросил исключение InvalidArgumentException\n";
}

try {
$rProp->setValue($example, -2);
} catch (
InvalidArgumentException) {
echo
"При установке значения -2 методом ReflectionProperty::setValue() хук выбросил исключение InvalidArgumentException\n";
}

// Но такой вызов установит свойству $age значение -2 без ошибки
$rProp->setRawValue($example, -2);
echo
$example->age;

?>

Результат выполнения приведённого примера:

При установке свойству значения -2 хук выбросил исключение InvalidArgumentException
При установке значения -2 методом ReflectionProperty::setValue() хук выбросил исключение InvalidArgumentException
-2
Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top