Les interfaces en PHP

par

dans

Une interface peut être vue comme une classe entièrement abstraite. Son rôle est de définir des méthodes qui devront obligatoirement être rédigée les classes qui implémenteront cette interface. Les méthodes spécifiées par une interface doivent donc être publiques.

Une interface se créée comme une classe mais avec le mot-clé Interface et sans coder le contenu des méthodes. Ce sera aux classes l’implémentant de coder ce qu’elles doivent faire, et ce qu’il faut faire pourra être différent d’une classe à une autre. Pour qu’une classe implémente une interface, on ajoutera à la suite de son nom le mot-clé implements suivi du nom ou des noms des interfaces à implémenter. Une classe peut en effet implémenter plusieurs interfaces. Dans ce cas, on sépare leurs noms par une virgule.

Une interface, tout comme une classe, peut être étendue avec le mot-clé extends et peut contenir des constantes de classe. Il s’agit de constantes de classes classiques qui ne peurront pas être redéfinies dans les classes implémentant l’interface, puisqu’il s’agit de constantes.

interface entityInformations
{
    const ENTITY_CONST = 'entity';
 
    public function getName($entity): string;
}
 
class User implements entityInformations
{
    public function getName($entity): string
    {
        return $entity->last_name . ' ' . $entity->first_name;
    }
}
 
class Company implements entityInformations
{
    public function getName($entity): string
    {
        return $entity->name;
    }
}

Un intérêt de l’interface est par exemple de se passer de la méthode method_exists. L’usage de cet méthode impose d’écrire scrupuleusement le nom de méthode en paramètre de la même manière alors qu’avec l’interface on bénéficie de l’autocomplétion de l’IDE, des méthodes de recherche / remplacement / refactoring.