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.

Bilginize: PHP 8.3.0 ve sonrasında, bu yöntemin tek bağımsız değişkenle çağrılması önerilmemektedir. Yerine ReflectionClass::setStaticPropertyValue() kullanılmalıdır.

Bağımsız Değişkenler

nesne

Özellik statik değilse özelliğin ait olduğu nesne, statik ise null belirtilmelidir.

değer

Yeni değer.

Dönen Değerler

Hiçbir değer dönmez.

Sürüm Bilgisi

Sürüm: Açıklama
8.3.0 Bu yöntemin tek bağımsız değişkenle çağrılması artık önerilmiyor. Duruk özellikleri değiştirmek için bunun yerine ReflectionClass::setStaticPropertyValue() kullanılmalıdır.
8.1.0 Private ve protected özellikler ReflectionProperty::setValue() tarafından hemen erişilebilir olur. Evvelce erişilebilir olmaları için ReflectionProperty::setAccessible() çağrısı yapmak gerekirdi; özellik erişilebilir değilse ReflectionException istisnası oluşurdu.

Örnekler

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

<?php
class Foo {
public static
$staticProperty;

public
$property;
protected
$privateProperty;
}

$reflectionClass = new ReflectionClass('Foo');

// PHP 8.3 ve sonrasında, duruk özelliklere değer atamak için
// setValue değil setStaticPropertyValue() kullanılmalıdır.
$reflectionClass->setStaticPropertyValue('staticProperty', '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); // yalnızca PHP 8.1.0 öncesi
$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