ReflectionProperty::setValue

(PHP 5, PHP 7, PHP 8)

ReflectionProperty::setValueDéfinit la valeur de la propriété

Description

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

Définit (modifie) la valeur de la propriété.

Note: Pour définir les valeurs des propriétés statiques, utilisez ReflectionProperty::setValue(null, $value).

Liste de paramètres

object

Pour les propriétés statiques, passez null. Pour les propriétés non statiques, passez l'objet.

value

La nouvelle valeur.

Valeurs de retour

Aucune valeur n'est retournée.

Historique

Version Description
8.3.0 L'appel de cette méthode avec un seul argument est obsolète, utilisez plutôt ReflectionProperty::setValue(null, $value) pour les propriétés statiques.
8.1.0 Les propriétés privées et protégées sont immédiatement accessibles par ReflectionProperty::setValue(). Auparavant, elles devaient être rendues accessibles en appelant ReflectionProperty::setAccessible(), sinon une ReflectionException était déclenchée.

Exemples

Exemple #1 Exemple avec ReflectionProperty::setValue()

<?php
class Foo {
public static
$staticProperty;

public
$property;
protected
$privateProperty;
}

$reflectionClass = new ReflectionClass('Foo');

// À partir de PHP 8.3, passer null en premier argument est requis
// pour accéder aux propriétés statiques.
$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); // Seulement nécessaire avant PHP 8.1.0.
$reflectionProperty->setValue($foo, 'foobar');
var_dump($reflectionProperty->getValue($foo));
?>

L'exemple ci-dessus va afficher :

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

Voir aussi