文字

ReflectionClass::getStaticPropertyValue

(PHP 5 >= 5.1.0)

ReflectionClass::getStaticPropertyValue获取静态(static)属性的值

说明

public mixed ReflectionClass::getStaticPropertyValue ( string $name [, mixed &$def_value ] )

获取这个类里静态(static)属性的值。

参数

name

静态属性的名称,来返回它的值。

def_value

假如类没有定义 name 的 static 属性,将返回一个默认值。 如果属性不存在,并且省略了此参数,将会抛出 ReflectionException 。

返回值

静态属性的值。

范例

Example #1 ReflectionClass::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() - 设置静态属性的值

用户评论:

[#1] Antares [2011-08-16 07:11:57]

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 
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';

[#2] Mauro Gabriel Titimoli [2010-01-21 12:05:40]

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

上一篇: 下一篇: