ReflectionProperty::setValue

(PHP 5, PHP 7, PHP 8)

ReflectionProperty::setValueDefine el valor de la propiedad

Descripción

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

Define (modifica) el valor de la propiedad.

Nota: Para definir los valores de las propiedades estáticas, utilice ReflectionProperty::setValue(null, $value).

Parámetros

object

Para las propiedades estáticas, pase null. Para las propiedades no estáticas, pase el objeto.

value

El nuevo valor.

Valores devueltos

No devuelve ningún valor.

Historial de cambios

Versión Descripción
8.3.0 La llamada a este método con un solo argumento está obsoleto, utilice en su lugar ReflectionProperty::setValue(null, $value) para las propiedades estáticas.
8.1.0 Las propiedades privadas y protegidas son inmediatamente accesibles por ReflectionProperty::setValue(). Anteriormente, debían ser hechas accesibles llamando a ReflectionProperty::setAccessible(), de lo contrario se lanzaba una ReflectionException.

Ejemplos

Ejemplo #1 Ejemplo con ReflectionProperty::setValue()

<?php
class Foo {
public static
$staticProperty;

public
$property;
protected
$privateProperty;
}

$reflectionClass = new ReflectionClass('Foo');

// A partir de PHP 8.3, pasar null como primer argumento es requerido
// para acceder a las propiedades estáticas.
$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); // Solo necesario antes de PHP 8.1.0.
$reflectionProperty->setValue($foo, 'foobar');
var_dump($reflectionProperty->getValue($foo));
?>

El resultado del ejemplo sería:

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

Ver también