Une interface est un contrat que toute classe implémentant cette interface doit respecter.
Elle définit quoi faire, pas comment le faire.
Exemple :
<?php
// Contrat : tout "envoyeur d'email" doit avoir une méthode `envoyer`
interface MailerInterface {
public function envoyer(string $destinataire, string $sujet, string $corps): void;
}
Pourquoi c’est utile ?
- Votre code métier dépend du contrat (
MailerInterface), pas d’une implémentation concrète (GmailMailer,SendGridMailer, etc.). - Vous pouvez changer de service sans toucher au reste de l’application.
- En test, vous injectez un
MockMailerqui ne fait rien → pas d’email réel envoyé.