(PHP 5, PHP 7, PHP 8)
ReflectionProperty::setValue — Устанавливает значение свойству
Метод задаёт, или изменяет, значение свойства.
Замечание: Чтобы установить статические значения свойств, используйте метод
ReflectionProperty::setValue(null, $value).
object
Для статических свойств передайте null.
Для нестатических свойств передайте объект.
valueНовое значение.
Функция не возвращает значения после выполнения.
| Версия | Описание |
|---|---|
| 8.3.0 |
Вызов метода с одним аргументом является устаревшим,
вместо этого используйте ReflectionProperty::setValue(null, $value)
для статических свойств.
|
| 8.1.0 | Доступ к закрытым и защищённым свойствам сразу получают методом ReflectionProperty::getValue(). Раньше свойства требовалось сделать доступными методом ReflectionProperty::setAccessible(), иначе метод выбрасывал исключение ReflectionException. |
Пример #1 Пример использования метода ReflectionProperty::setValue()
<?php
class Foo {
public static $staticProperty;
public $property;
protected $privateProperty;
}
$reflectionClass = new ReflectionClass('Foo');
// Начиная с PHP 8.3, для доступа к статическим свойствам необходимо передавать null
// в качестве первого аргумента.
$reflectionProperty = $reflectionClass->getProperty('staticProperty');
$reflectionProperty->setValue(null, 'foo');
var_dump(Foo::$staticProperty);
$foo = new Foo;
$reflectionClass->getProperty('property')->setValue($foo, 'bar');
var_dump($foo->property);
$reflectionProperty = $reflectionClass->getProperty('privateProperty');
$reflectionProperty->setAccessible(true); // Требуется только до PHP 8.1.0
$reflectionProperty->setValue($foo, 'foobar');
var_dump($reflectionProperty->getValue($foo));
?>Результат выполнения приведённого примера:
string(3) "foo" string(3) "bar" string(6) "foobar"