PHP 开发者大会日本 2024

ReflectionClass::getStaticPropertyValue

(PHP 5 >= 5.1.2, PHP 7, PHP 8)

ReflectionClass::getStaticPropertyValue获取静态属性的值

说明

public ReflectionClass::getStaticPropertyValue(string $name, mixed &$def_value = ?): mixed

获取该类的静态属性的值。

参数

name

要返回其值的静态属性的名称。

def_value

如果类没有声明具有给定 name 的静态属性,则返回的默认值。如果该属性不存在且省略此参数,则抛出 ReflectionException

返回值

静态属性的值。

范例

示例 #1 ReflectionClass::getStaticPropertyValue() 的基本用法

<?php
class Apple {
public static
$color = 'Red';
}

$class = new ReflectionClass('Apple');
var_dump($class->getStaticPropertyValue('color'));
?>

以上示例的输出

string(3) "Red"

参见

添加一个注释

用户贡献的注释 2 个注释

up
7
Antares
13 年前
看起来这个方法与 getStaticProperties 方法的安全级别不同。

如果你创建两个类 A 和 B,如下所示

<?php
class A{
protected static
$static_var='foo';

public function
getStatic(){
$class=new ReflectionClass($this);
return
$class->getStaticPropertyValue('static_var');
}

public function
getStatic2(){
$class=new ReflectionClass($this);
$staticProps=$class->getStaticProperties();
return
$staticProps['static_var'];
}

public function
__construct(){
echo
$this->getStatic2();
echo
$this->getStatic();
}
}

class
B extends A{
protected static
$static_var='foo2';

}
?>

那么对于 getStatic() 调用将输出一个异常,而 getStatic2() 将正确返回 'foo2'。
up
-2
Mauro Gabriel Titimoli
14 年前
如果你想更改一个可变类的静态属性...

PHP 5.2
<?php
$reflection
= new ReflectionClass($className);
$staticPropertyReference = & $reflection->getStaticPropertyValue($staticPropertyName);

$staticPropertyReference = 'new value';
?>

PHP 5.3
<?php
$className
::$$classProperty
?>
To Top