Article mis à jour le : 05-05-2022
Comment déclarer et utiliser les interfaces en PHPVoici comment déclarer et utiliser une interface en PHP. Il est important de se rappeller des différences entre interfaces et classes abastraites afin d'éviter les mélanges subtils. Mais si vous êtes flemmard, disons qu'une interface est un contrat, un comportement, alors qu'une classe abstraire est un élément de base pour un sous-ensemble. Pour ce qui concerne nos interfaces, voici donc l'essentiel...
- Toutes les méthodes contenues dans votre interface doivent être publiques
- Votre interface ne peut contenir de méthodes déclarées abstraites ou finales
- Une interface et une classe ne peuvent avoir le même nom
- Les interfaces peuvent avoir des constantes, mais la classe qui implémentera l'interface ne pourra l'écraser
- Une classe peut combiner interface et héritage, pour cela vous devez d'abord déclarer l'héritage (extends) puis les interfaces (implements)
- Une classe peut implémenter plusieurs interfaces, mais évidemment celles-ci ne doivent avoir de méthodes ayant le même nom
Une interface peut hériter d'une ou plusieurs (à la différence de l'héritage "classique") interfaces, il y a deux règles à respecter:
- On ne peut réécrire la méthode déja déclarée dans l'interface dont on hérite
- La déclaration de l'héritage multiple se fait de cette manière, en séparant par des virgules :
PHP présente certaines interface prédéfinies, permattant de gagner en temps et en flexibilité. Par exemple :
- Iterator : permet de lire la valeur de l'élément courant d'un objet (un tableau par exemple). L'interface propose de quoi lire la valeur, le nom de l'élement courant, de repartir à 0, et passr au suivant...
- SeekableIterator : Idem que iterator mais rajouter une méthode pour se postionner à un emplacement précis
- Countable : contient une méthode qui retourne un entier depuis la fonction implémentée, par exemple la taille d'un tableau
- Une EXCELLENTE: ArrayIterator : qui permet de créer et gérer les objets tableaux, avec tous les outils mentionnés plus haut.
- Et bien d'autres encore...