CakeFest 2024: The Official CakePHP Conference

ReflectionClass::getStaticProperties

(PHP 5, PHP 7, PHP 8)

ReflectionClass::getStaticPropertiesRécupère les propriétés statiques

Description

public ReflectionClass::getStaticProperties(): array

Récupère les propriétés statiques.

Liste de paramètres

Cette fonction ne contient aucun paramètre.

Valeurs de retour

Les propriétés statiques, en tant que array.

Historique

Version Description
8.3.0 Le type de retour de ReflectionClass::getStaticProperties() a été modifié en array au lieu de ?array.

Voir aussi

add a note

User Contributed Notes 2 notes

up
2
jlennox @ google mail
13 years ago
I had the need to recursive merge the results from a subclass with all of it's parents, and this was the resulting code:

<?php
function GetStaticPropertiesRecursive($class) {
$currentClass = $class;
$joinedProperties = array();
do {
$reflection = new ReflectionClass($class);
$staticProperties = $reflection->getStaticProperties();
foreach (
$staticProperties as $name => $value) {
if (
is_array($value)) {
if (isset(
$joinedProperties[$name]))
$joinedProperties[$name] = array_merge($value, $joinedProperties[$name]);
else
$joinedProperties[$name] = $value;
} else {
if (isset(
$joinedProperties[$name]))
$joinedProperties[$name][] = $value;
else
$joinedProperties[$name] = array($value);
}
}
} while (
$class = get_parent_class($class));
return
$joinedProperties;
}

Using this function:
class
base {
public static
$Test = array("foo1", "foo2");
}
class
sub extends base {
public static
$Test = "sub";
}

print_r(GetStaticPropertiesRecursive("sub"));
?>

That outputs:
Array
(
[Test] => Array
(
[0] => foo1
[1] => foo2
[2] => sub
)

)

The merge follows the rules of array_merge on duplicate keys.
up
1
joao dot felipe dot c dot b at gmail dot com
8 years ago
getStaticProperties return a set of the property itself. It's diferente from getProperties(ReflectionProperty::IS_STATIC) because it return a set of ReflectionProperty class.
To Top