I had the need to recursive merge the results from a subclass with all of it's parents, and this was the resulting code:
<?php
function GetStaticPropertiesRecursive($class) {
$currentClass = $class;
$joinedProperties = array();
do {
$reflection = new ReflectionClass($class);
$staticProperties = $reflection->getStaticProperties();
foreach ($staticProperties as $name => $value) {
if (is_array($value)) {
if (isset($joinedProperties[$name]))
$joinedProperties[$name] = array_merge($value, $joinedProperties[$name]);
else
$joinedProperties[$name] = $value;
} else {
if (isset($joinedProperties[$name]))
$joinedProperties[$name][] = $value;
else
$joinedProperties[$name] = array($value);
}
}
} while ($class = get_parent_class($class));
return $joinedProperties;
}
Using this function:
class base {
public static $Test = array("foo1", "foo2");
}
class sub extends base {
public static $Test = "sub";
}
print_r(GetStaticPropertiesRecursive("sub"));
?>
That outputs:
Array
(
[Test] => Array
(
[0] => foo1
[1] => foo2
[2] => sub
)
)
The merge follows the rules of array_merge on duplicate keys.
PHP.mk документација
ReflectionClass::getStaticProperties
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Патека
reflectionclass.getstaticproperties.php
Локална патека за оваа страница.
Извор
php.net/manual/en
Оригиналниот HTML се реупотребува и локално се стилизира.
Режим
Прокси + превод во позадина
Кодовите, табелите и белешките остануваат читливи во истиот тек.
Референца
reflectionclass.getstaticproperties.php
ReflectionClass::getStaticProperties
Референца за `reflectionclass.getstaticproperties.php` со подобрена типографија и навигација.
ReflectionClass::getStaticProperties
класата mysqli_driver
ReflectionClass::getStaticProperties — Ги добива статичните својства
Параметри
Оваа функција нема параметри.
Вратени вредности
Статичните својства, како array.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.3.0 |
Типот на враќање на ReflectionClass::getStaticPropertyValue()
Стандардната вредност на array from ?array.
|
Види Исто така
- Вредноста на статичкиот имот. - Земи вредност на статичен имот
- - Земи ги статичките имоти - Поставува јавна статична вредност на својство
Белешки од корисници 2 забелешки
jlennox @ google mail ¶
пред 15 години
joao dot felipe dot c dot b at gmail dot com ¶
пред 10 години
getStaticProperties return a set of the property itself. It's diferente from getProperties(ReflectionProperty::IS_STATIC) because it return a set of ReflectionProperty class.