ReflectionProperty::setValue

Set property value

&reftitle.description; public `void` `ReflectionProperty::setValue` ``object``null```object` `mixed` `value` public `void` `ReflectionProperty::setValue` `mixed` `value`

Sets (changes) the property's value.

To set static property values, use `ReflectionProperty::setValue(null, $value)`.

&reftitle.parameters;

`object`

- For static properties, pass in &null;. For non-static properties, pass in the object.

`value`

- The new value.

&reftitle.returnvalues;

&return.void;

&reftitle.changelog;

&Version; | &Description;
8.3.0 | Calling this method with a single argument is deprecated, instead use `ReflectionProperty::setValue(null, $value)` for static properties.
8.1.0 | Private and protected properties can be accessed by `ReflectionProperty::setValue` right away. Previously, they needed to be made accessible by calling `ReflectionProperty::setAccessible`; otherwise a `ReflectionException` was thrown.

&reftitle.examples;

### `ReflectionProperty::setValue` example

    <?php
    class Foo {
        public static $staticProperty;

        public $property;
        protected $privateProperty;
    }

    $reflectionClass = new ReflectionClass('Foo');

    // As of PHP 8.3, passing in null as the first argument is required
    // to access static properties.
    $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); // only required prior to PHP 8.1.0
    $reflectionProperty->setValue($foo, 'foobar');
    var_dump($reflectionProperty->getValue($foo));
    ?>

&example.outputs;

    string(3) "foo"
    string(3) "bar"
    string(6) "foobar"

&reftitle.seealso;

- `ReflectionProperty::getValue`
- `ReflectionProperty::setAccessible`
- `ReflectionClass::setStaticPropertyValue`