(PHP 5 >= 5.1.2, PHP 7, PHP 8)
ReflectionClass::getStaticPropertyValue — Obtiene el valor de una propiedad estática
Obtiene el valor de una propiedad estática de esta clase.
nameEl nombre de la propiedad estática para la que devolver un valor.
default
Un valor predeterminado a devolver en caso de que la clase no declare propiedades
estáticas con el name dado. Si la propiedad no
existe y se omite este argumento, se
lanza una ReflectionException .
El valor de la propiedad estática.
Ejemplo #1 Uso básico de ReflectionClass::getStaticPropertyValue()
<?php
class Apple {
public static $color = 'Rojo';
}
$class = new ReflectionClass('Apple');
var_dump($class->getStaticPropertyValue('color'));
?>El ejemplo anterior mostrará:
string(4) "Rojo"
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
?>