Chaque objet créé à partir d’une classe possède normalement son propre jeu de propriétés, indépendant des autres. Une propriété statique, à l’inverse, est unique et commune : la modifier depuis un objet se répercute immédiatement pour tous les autres, un peu comme un compteur affiché sur un tableau commun plutôt qu’une ardoise individuelle.
Déclaration en PHP
Elle se déclare avec le mot-clé static et se manipule avec l’opérateur :: plutôt que -> : class Compteur { public static int $total = 0; } puis Compteur::$total++;. Elle conserve sa valeur pendant toute la durée d’exécution du script, contrairement à une variable locale.
Dans WordPress
On s’en sert pour mettre en cache un résultat coûteux à calculer et partagé par toutes les instances d’une classe, par exemple la liste des taxonomies déjà interrogées dans une même requête. C’est aussi le mécanisme classique derrière un patron singleton, où une propriété statique conserve l’unique instance de la classe d’un plugin.
Exemple
class Plugin {
private static ?Plugin $instance = null;
public static function instance(): Plugin {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
}
Pièges fréquents
Comme une propriété statique survit entre les appels d’une même requête PHP, elle peut introduire un état partagé difficile à tracer, surtout dans un contexte où plusieurs requêtes s’exécutent en parallèle sur le serveur. Elle est aussi héritée par les classes filles, mais partagée entre elles sauf si chacune la redéclare explicitement.