ReflectionProperty::setValue

(PHP 5, PHP 7, PHP 8)

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

Описание

publicReflectionProperty::setValue(object$object, mixed$value): void
publicReflectionProperty::setValue(mixed$value): void

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

Замечание: Начиная с PHP 8.3.0 вызов метода с единственным аргументом устарел, вместо него вызывают метод ReflectionClass::setStaticPropertyValue().

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

object

Чтобы метод изменил нестатическое свойство, в метод передают объект. Если свойство статическое, нужно передать значение null.

value

Новое значение.

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

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

Список изменений

ВерсияОписание
8.3.0 Вызов метода с единственным аргументом устарел, вместо него для изменения статического свойства вызывают метод ReflectionClass::setStaticPropertyValue().
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 больше не нужно вызывать метод setValue для установки
// значения статического свойства, вместо него вызвают метод setStaticPropertyValue()
$reflectionClass->setStaticPropertyValue('staticProperty', '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"

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

To Top