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.