Menu
Coddy logo textTech

Introduction aux Interfaces

Fait partie de la section Programmation Orientée Objet du Journey PHP de Coddy — leçon 27 sur 91.

Une interface définit un contrat que les classes doivent suivre. Contrairement aux classes abstraites qui peuvent contenir à la fois des méthodes abstraites et concrètes, une interface déclare uniquement des signatures de méthode sans aucune implémentation. Considérez cela comme une promesse : toute classe qui implémente une interface garantit qu'elle fournira ces méthodes spécifiques.

Vous définissez une interface en utilisant le mot-clé interface :

<?php
interface Printable {
    public function print();
}

Cette interface déclare que toute classe implémentant Printable doit avoir une méthode print(). L'interface ne se soucie pas de la manière dont la méthode fonctionne, seulement qu'elle existe.

Voici un exemple simple montrant la structure de base :

<?php
interface Drivable {
    public function start();
    public function stop();
}

Notez que les méthodes d'interface n'ont pas de corps, seulement la signature se terminant par un point-virgule. Toutes les méthodes d'une interface sont implicitement publiques, vous ne pouvez donc pas utiliser private ou protected.

Les interfaces sont puissantes car elles permettent à des classes non liées de partager un comportement commun. Une Car et une Motorcycle n'ont peut-être rien en commun en termes d'héritage, mais toutes deux peuvent implémenter Drivable pour garantir qu'elles possèdent les méthodes start() et stop().

Point clé : Une interface définit les méthodes qu'une classe doit posséder, et non la manière dont elles doivent fonctionner. Elle établit un contrat que les classes d'implémentation doivent respecter.

challenge icon

Défi

Facile

Construisons un système de messagerie simple qui vous présente les interfaces. Vous allez définir une interface qui établit un contrat sur la manière dont les messages doivent être gérés, posant ainsi les bases des classes d'implémentation que vous créerez dans la prochaine leçon.

Vous organiserez votre code sur deux fichiers :

  • Messageable.php — Définissez une interface appelée Messageable qui déclare deux signatures de méthode : compose($content) pour créer un message, et deliver() pour l'envoyer. Rappelez-vous, les méthodes d'interface n'ont pas de corps — seulement la signature se terminant par un point-virgule.
  • main.php — Incluez le fichier Messageable. Pour vérifier que votre interface est correctement définie, utilisez la fonction interface_exists() de PHP pour vérifier si Messageable existe. Ensuite, utilisez la classe ReflectionClass pour inspecter votre interface et lister ses méthodes. Créez une réflexion de votre interface, récupérez ses méthodes à l'aide de getMethods(), et affichez chaque nom de méthode sur sa propre ligne.

Votre sortie doit afficher les deux noms de méthodes que votre interface déclare, chacun sur une ligne séparée, dans l'ordre où vous les avez définis.

Ce défi se concentre uniquement sur la définition d'une interface — le contrat que les futures classes devront remplir. Vous établissez quelles méthodes doivent exister, sans vous soucier de leur fonctionnement. Cette implémentation viendra dans la prochaine leçon !

Aide-mémoire

Une interface définit un contrat que les classes doivent suivre. Elle déclare uniquement les signatures de méthodes sans aucune implémentation.

Définissez une interface en utilisant le mot-clé interface :

<?php
interface Printable {
    public function print();
}

Les méthodes d'interface n'ont pas de corps, seulement la signature se terminant par un point-virgule. Toutes les méthodes d'une interface sont implicitement publiques.

<?php
interface Drivable {
    public function start();
    public function stop();
}

Les interfaces permettent à des classes non liées de partager un comportement commun en garantissant qu'elles implémentent des méthodes spécifiques.

Essayez vous-même

<?php
// Inclure le fichier de l'interface Messageable
require_once 'Messageable.php';

// TODO : Utiliser interface_exists() pour vérifier si l'interface Messageable existe

// TODO : Créer un objet ReflectionClass pour l'interface Messageable

// TODO : Obtenir les méthodes en utilisant getMethods()

// TODO : Parcourir les méthodes et afficher le nom de chaque méthode sur sa propre ligne

?>
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet