PHP 8.1.0 Released!

ReflectionProperty::setValue

(PHP 5, PHP 7, PHP 8)

ReflectionProperty::setValueÖzelliğe değer atar

Açıklama

public ReflectionProperty::setValue(object $nesne, mixed $değer): void
public ReflectionProperty::setValue(mixed $değer): void

Bir özelliğe değer atar.

Değiştirgeler

nesne

Özellik statik değilse özelliğin ait olduğu nesne burada belirtilmelidir. Statik ise nesne belirtmeye gerek yoktur. Sadece değer belirtmek yeterlidir.

değer

Yeni değer.

Dönen Değerler

Hiçbir değer dönmez.

Hatalar/İstisnalar

Özellik erişilebilir değilse ReflectionException yavrulanır. Protected veya private bir özelliği erişilebilir kılmak için ReflectionProperty::setAccessible() kullanılmalıdır.

Örnekler

Örnek 1 - ReflectionProperty::setValue() örneği

<?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));
?>

Yukarıdaki örneğin çıktısı:

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

Ayrıca Bakınız

add a note add a note

User Contributed Notes 1 note

up
1
me at ircmaxell dot om
10 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