PHP 7.4.0 alpha 1 Released

ReflectionClass::getStaticPropertyValue

(PHP 5 >= 5.1.2, PHP 7)

ReflectionClass::getStaticPropertyValue静的なプロパティの値を取得する

説明

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

このクラスの静的なプロパティの値を取得します。

パラメータ

name

値を返したい静的プロパティの名前。

def_value

指定した名前の静的プロパティがそのクラスに存在しない場合に返す、デフォルト値。 プロパティが存在せず、かつこの引数も省略されていた場合は、 ReflectionException が発生します。

返り値

静的プロパティの値を返します。

例1 ReflectionClass::getStaticPropertyValue() の基本的な使用例

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

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

上の例の出力は以下となります。

string(3) "Red"

参考

add a note add a note

User Contributed Notes 2 notes

up
4
Antares
7 years ago
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';
up
-1
Mauro Gabriel Titimoli
9 years ago
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
?>
To Top