(PHP 5 >= 5.1.2, PHP 7, PHP 8)
ReflectionClass::getStaticPropertyValue — Récupère la valeur d'une propriété statique
Récupère la valeur d'une propriété statique de la classe.
nameLe nom de la propriété statique pour laquelle nous souhaitons récupérer la valeur.
default
Une valeur par défaut à retourner lorsque la classe ne déclare pas
une propriété statique avec le nom fourni name.
Si la propriété n'existe pas, et que cet argument est omis, une exception
de type ReflectionException sera émise.
La valeur de la propriété statique.
Exemple #1 Exemple avec ReflectionClass::getStaticPropertyValue()
<?php
class Apple {
public static $color = 'Red';
}
$class = new ReflectionClass('Apple');
var_dump($class->getStaticPropertyValue('color'));
?>L'exemple ci-dessus va afficher :
string(3) "Red"
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';Note that ReflectionClass::getStaticPropertyValue() can also return values from private or protected properties.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
?>