• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • ReflectionClass::getStaticPropertyValue()

    (PHP 5 >= 5.1.2, PHP 7)

    获取静态(static)属性的值

    说明

    publicReflectionClass::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
    ?>