ReflectionClass::getStaticProperties()
(PHP 5, PHP 7)
获取静态(static)属性
说明
public ReflectionClass::getStaticProperties(void): array
获取静态(static)属性。
Warning本函数还未编写文档,仅有参数列表。
参数
此函数没有参数。
返回值
静态(static)的属性,类型是array。
参见
- ReflectionClass::getStaticPropertyValue() 获取静态(static)属性的值
- ReflectionClass::setStaticPropertyValue() 设置静态属性的值
getStaticProperties return a set of the property itself. It's diferente from getProperties(ReflectionProperty::IS_STATIC) because it return a set of ReflectionProperty class.
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.