Une interface décrit ce qu’un objet doit savoir faire, sans dire comment il le fait : un peu comme une fiche de poste qui énumère des compétences requises sans préciser la méthode de travail de chacun. Deux classes très différentes peuvent ainsi respecter la même interface tout en fonctionnant de façon totalement distincte en coulisses.
Déclaration en PHP
Une interface se déclare avec le mot-clé interface et ne contient que des signatures de méthodes, sans corps : interface Cache { public function get(string $cle); public function set(string $cle, $valeur): void; }. Une classe l’implémente avec implements, et peut en implémenter plusieurs à la fois, contrairement à l’héritage de classe qui est unique.
Dans WordPress
Le cœur historique s’appuie surtout sur des conventions de nommage plutôt que sur des interfaces formelles, mais certaines API modernes en font usage, comme WP_REST_Controller ou les classes de blocs. Dans une extension, définir une interface Reglable ou Exportable permet d’écrire du code qui fonctionne avec n’importe quelle implémentation future sans modification.
Exemple
interface Exportable {
public function versJson(): string;
}
class Produit implements Exportable {
public function versJson(): string {
return json_encode(['nom' => $this->nom]);
}
}
Bon à savoir
Depuis PHP 8, les interfaces peuvent aussi imposer des constantes. Une classe qui implémente une interface doit reprendre l’intégralité de sa signature, y compris les types de retour déclarés, sous peine d’erreur fatale à l’exécution.