ReflectionProperty::setValue

(PHP 5, PHP 7, PHP 8)

ReflectionProperty::setValueУстанавливает значение свойству

Описание

public ReflectionProperty::setValue(?object $object, mixed $value): void
public ReflectionProperty::setValue(mixed $value): void

Метод задаёт, или изменяет, значение свойства.

Замечание: Чтобы установить статические значения свойств, используйте метод 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"

Смотрите также