Dynamic-Mess.com


"The world is a dynamic mess of jiggling things..."

Interfaces en PHP

Article posté le 02-01-2014 dans la catégorie PHP

Voici 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...

1- Impératifs de l'interface 

- 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

2- Déclarer et implémenter notre interface

//Déclaration
interface Deplace
{
  public function bouge($destination);
}
//Implémentation RAPPEL : la classe doit implémenter TOUTES les fonctions de l'interface
class Voiture implements Deplace
{
  public function bouge($destination);
  {
  }
}

3- Combiner interfaces et héritage

- 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

4- Héritage d'interface

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 :

interface Toto extends Tutu, Titi // hérite deux interfaces

5- Les interfaces prédéfinies

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...

 

 


Tweet
comments powered by Disqus