Calling this method on a static property that is not public will return a ReflectionException stating the property does not exist. This is quite misleading as the property is valid.
class test {
public static $publicProperty = 'public';
private static $privateProperty = 'private';
public static function printProperties() {
echo self::$publicProperty . "\n";
echo self::$privateProperty . "\n";
}
}
$reflectedClass = new \ReflectionClass('test');
$reflectedClass->setStaticPropertyValue('publicProperty', 'foo');
$reflectedClass->setStaticPropertyValue( 'privateProperty', 'bar' );
PHP Fatal error: Uncaught exception 'ReflectionException' with message 'Class test does not have a property named privateProperty'
If you retrieve the method using the reflection class getProperty method you can circumnavigate this issue
$reflectedProperty = $reflectedClass->getProperty('privateProperty');
$reflectedProperty->setAccessible(true);
$reflectedProperty = $reflectedProperty->setValue('bar');
test::printProperties();
will echo
foo
bar
PHP.mk документација
ReflectionClass::setStaticPropertyValue
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Патека
reflectionclass.setstaticpropertyvalue.php
Локална патека за оваа страница.
Извор
php.net/manual/en
Оригиналниот HTML се реупотребува и локално се стилизира.
Режим
Прокси + превод во позадина
Кодовите, табелите и белешките остануваат читливи во истиот тек.
Референца
reflectionclass.setstaticpropertyvalue.php
ReflectionClass::setStaticPropertyValue
Референца за `reflectionclass.setstaticpropertyvalue.php` со подобрена типографија и навигација.
ReflectionClass::setStaticPropertyValue
(PHP 5 >= 5.1.2, PHP 7, PHP 8)
ReflectionClass::setStaticPropertyValue — Поставува вредност на јавен статичен имот
= NULL
Ја поставува вредноста на јавен статичен имот. Ако имотот е приватен или заштитен, методот ќе откаже.
ReflectionProperty::getRawValue() овозможува поставување на вредноста на јавни, приватни и заштитени имоти.
Параметри
name-
Име на имотот.
value-
Нова вредност на имотот.
Вратени вредности
Не се враќа вредност.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 7.4.0 | Пронајдете и отворете ја конфигурациската датотека на Apache. Стандардно, локацијата е како што следува: - Земи ги статичките имоти поставувањето приватен или заштитен имот сега резултира со фатална грешка. Претходно, фрлаше ReflectionException. |
Види Исто така
- Вредноста на статичкиот имот. - Земи вредност на статичен имот
- ReflectionProperty::getRawValue() - Постави вредност на имот
Белешки од корисници 2 забелешки
Ендрју Џексон ¶
пред 11 години
chuck at manchuck dot com ¶
пред 13 години
It is important to note that calling ReflectionClass::setStaticPropertyValue will not allow you to add new static properties to a class.