PHP 5.5.16 is released

ReflectionProperty::setValue

(PHP 5)

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

Description

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

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

Liste de paramètres

object

L'objet à utiliser dans le cas d'une propriété non statique. Si la propriété est statique, nul besoin de préciser un objet, seul value est nécessaire.

value

La nouvelle valeur.

Valeurs de retour

Aucune valeur n'est retournée.

Erreurs / Exceptions

Emet une ReflectionException si la propriété est inaccessible. Vous pouvez transformer une propriété protégée ou privée en publique grâce à ReflectionProperty::setAccessible().

Exemples

Exemple #1 Exemple ReflectionProperty::setValue()

<?php
class Foo {
    public static 
$staticProperty;
    
    public 
$property;
    protected 
$privateProperty;
}

$reflectionClass = new ReflectionClass('Foo');

$reflectionClass->getProperty('staticProperty')->setValue('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);
$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

add a note add a note

User Contributed Notes 1 note

up
0
me at ircmaxell dot om
3 years ago
You can use ReflectionProperty::setValue to set the value on static properties as well as regular instance properties.  Simply pass null in place of the instance:

<?php
class Foo {
    protected static
$bar = null;
    public static function
sayBar() {
        echo
self::$bar;
    }
}

$r = new ReflectionProperty('Foo', 'bar');
$r->setAccessible(true);
$r->setValue(null, 'foo');

Foo::sayBar(); // "foo"
?>
To Top