# Méthode magique

> Méthode dont le nom commence par deux underscores et que PHP appelle automatiquement dans des situations précises, sans appel explicite du développeur.

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

PHP réserve une famille de noms de méthodes préfixés par deux underscores (`__construct`, `__get`, `__toString`…) qu'il invoque lui-même à certains moments clés du cycle de vie d'un objet, un peu comme des réflexes déclenchés automatiquement plutôt que des gestes volontaires du développeur.

## Les plus courantes

- `__construct()` : appelée à la création de l'objet.
- `__get()` et `__set()` : interceptent l'accès à des propriétés inexistantes ou inaccessibles.
- `__call()` : intercepte l'appel d'une méthode inexistante.
- `__toString()` : définit ce qui s'affiche quand l'objet est converti en chaîne.
- `__wakeup()` et `__sleep()` : interviennent lors de la désérialisation et de la sérialisation.

## Dans WordPress

On les croise en particulier dans `WP_Post` et `WP_User`, dont l'accès à certaines propriétés passe par `__get()` pour charger des métadonnées à la demande plutôt que systématiquement. Certaines classes de widgets et de blocs utilisent aussi `__construct()` pour enregistrer automatiquement leurs réglages.

## Exemple

```
class Configuration {
    private array $valeurs = ['theme' => 'sombre'];

    public function __get($nom) {
        return $this->valeurs[$nom] ?? null;
    }
}

$config = new Configuration();
echo $config->theme; // "sombre"
```

## Pièges fréquents

Abuser des méthodes magiques rend le code difficile à suivre pour un IDE ou un autre développeur, car les propriétés n'apparaissent nulle part explicitement. Il vaut mieux les réserver à des besoins précis (compatibilité ascendante, chargement paresseux) plutôt qu'en faire un style de programmation systématique.
