phpday 2025 - Call For Papers

ReflectionClass::getStaticPropertyValue

(PHP 5 >= 5.1.2, PHP 7, PHP 8)

ReflectionClass::getStaticPropertyValueRécupère la valeur d'une propriété statique

Description

public ReflectionClass::getStaticPropertyValue(string $name, mixed &$def_value = ?): mixed

Récupère la valeur d'une propriété statique de la classe.

Avertissement

Cette fonction est actuellement non documentée ; seule la liste des arguments est disponible.

Liste de paramètres

name

Le nom de la propriété statique pour laquelle nous souhaitons récupérer la valeur.

def_value

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.

Valeurs de retour

La valeur de la propriété statique.

Exemples

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"

Voir aussi

add a note

User Contributed Notes 2 notes

up
7
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';
up
-2
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
?>
To Top