ReflectionClass::getStaticProperties

(PHP 5, PHP 7, PHP 8)

ReflectionClass::getStaticProperties获取静态属性

描述

public ReflectionClass::getStaticProperties(): array

获取静态属性。

参数

此函数没有参数。

返回值

静态属性,作为 array

变更日志

版本 描述
8.3.0 ReflectionClass::getStaticProperties() 的返回值类型已从 ?array 更改为 array

参见

添加注释

用户贡献注释 2 个注释

jlennox @ google mail
14 年前
我需要递归合并子类及其所有父类的结果,以下是生成的代码

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

使用此函数:
class
base {
public static
$Test = array("foo1", "foo2");
}
class
sub extends base {
public static
$Test = "sub";
}

print_r(GetStaticPropertiesRecursive("sub"));
?>

输出结果
数组
(
[Test] => 数组
(
[0] => foo1
[1] => foo2
[2] => sub
)

)

合并遵循对重复键的 array_merge 规则。
joao dot felipe dot c dot b at gmail dot com
8 年前
getStaticProperties 返回属性本身的集合。它与 getProperties(ReflectionProperty::IS_STATIC) 不同,因为它返回 ReflectionProperty 类的集合。
To Top