ReflectionClass::getStaticPropertyValue
(PHP 5 >= 5.1.2, PHP 7, PHP 8)
ReflectionClass::getStaticPropertyValue — staticプロパティの値を取得する
説明
このクラスのstaticプロパティの値を取得します。
パラメータ
name
-
値を返したいstaticプロパティの名前。
def_value
-
指定した名前のstaticプロパティがそのクラスに存在しない場合に返す、デフォルト値。 プロパティが存在せず、かつこの引数も省略されていた場合は、 ReflectionException が発生します。
戻り値
staticプロパティの値を返します。
例
例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() - staticプロパティの値を設定する
+add a note
User Contributed Notes 3 notes
Antares ¶
13 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';
tracid2008 at atgmail dot com ¶
29 days ago
Note that ReflectionClass::getStaticPropertyValue() can also return values from private or protected properties.
Mauro Gabriel Titimoli ¶
14 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
?>