# Méthode statique

> Méthode qui appartient à la classe elle-même plutôt qu'à une instance particulière, et qu'on appelle sans créer d'objet au préalable.

- Auteur : Clément Hadrot
- Publié le : 2026-09-25
- Mis à jour le : 2026-09-25
- URL : https://wpmoderne.dev.wordpress-developpement.fr/lexique/methode-statique/

La plupart des méthodes ont besoin d'une instance pour fonctionner : elles lisent ou modifient l'état propre à cet objet. Une méthode statique, elle, se comporte comme une simple fonction rangée dans une classe pour des raisons d'organisation : elle ne dépend d'aucun objet particulier et peut être appelée directement sur la classe.

## Fonctionnement en PHP

On la déclare avec le mot-clé `static` et on l'appelle avec l'opérateur `::` : `MaClasse::maMethode()`. À l'intérieur d'une méthode statique, `$this` n'existe pas, puisqu'il n'y a pas d'instance ; on utilise `self::` ou `static::` pour référencer la classe elle-même.

## Dans WordPress

Les classes de blocs Gutenberg et certaines API orientées objet exposent des méthodes statiques comme point d'entrée, par exemple des méthodes `register()` qui déclarent un bloc sans qu'on ait besoin d'instancier la classe. C'est aussi un moyen courant d'implémenter un patron singleton pour une classe de plugin unique en son genre, où une seule instance doit exister pendant toute la durée de la requête. Certaines fonctions utilitaires internes du cœur, exposées via des classes wrapper, suivent le même principe pour rester appelables sans configuration préalable.

## Exemple

```
class Convertisseur {
    public static function centimetresEnPouces(float $cm): float {
        return $cm / 2.54;
    }
}

echo Convertisseur::centimetresEnPouces(10);
```

## À ne pas confondre avec

Une méthode statique n'est pas une méthode « globale » indépendante de toute classe : elle reste soumise à la visibilité (`private`, `protected`) et peut être héritée ou redéfinie par une classe fille. Abuser des méthodes statiques rend cependant le code plus difficile à tester, car on ne peut pas facilement remplacer leur comportement par un double de test lors d'une suite de tests unitaires, contrairement à une méthode d'instance qu'on peut substituer via une interface.
