ReflectionClass::getStaticPropertyValue()
(PHP 5 >= 5.1.2, PHP 7)
获取静态(static)属性的值
说明
public ReflectionClass::getStaticPropertyValue(string $name[,mixed&$def_value]): mixed
获取这个类里静态(static)属性的值。
参数
- $name
- 静态属性的名称,来返回它的值。 
- $def_value
- 假如类没有定义$name的 static 属性,将返回一个默认值。如果属性不存在,并且省略了此参数,将会抛出ReflectionException。 
返回值
静态属性的值。
范例
Example #1ReflectionClass::getStaticPropertyValue()的基本用法
<?php
class Apple {
    public static $color = 'Red';
}
$class = new ReflectionClass('Apple');
var_dump($class->getStaticPropertyValue('color'));
?>
以上例程会输出:
string(3) "Red"
参见
- ReflectionClass::getStaticProperties() 获取静态(static)属性
- ReflectionClass::setStaticPropertyValue() 设置静态属性的值
It seems this method has a security level different from the getStaticProperties method.
If you make two classes A and B looking like
<?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';
}
?>
Then the output will be an exception for the getStatic() call, when the getStatic2() will correctly return 'foo2';If you want to change a static property of a variable class... PHP 5.2 <?php $reflection = new ReflectionClass($className); $staticPropertyReference = & $reflection->getStaticPropertyValue($staticPropertyName); $staticPropertyReference = 'new value'; ?> PHP 5.3 <?php $className::$$classProperty ?>
