PHP (POO) -Interfaces-

Ajouter un commentaire

Si une classe abstraite sert à factoriser les traitements, une interface sert à en imposer la structure : elle permet d’imposer aux classes l’implémentant la définition de méthodes prédéfinies.

L’interface diffère d’une classe abstraite sur de nombreux points :

  • On ne peut pas hériter une interface
  • Une interface ne peut pas contenir de code utile
  • Une interface ne comporte pas de notion de visibilité
  • Une interface ne peut pas déclarer d’attributs ni de méthodes statiques

De plus, une classe peut très bien implémenter plusieurs interfaces. Une interface est capable d’hériter d’une ou plusieurs interfaces.

Exemple 

<?php
interface Usine {
    
}

class Voiture implements Usine {
    
}

Constantes

Une interface peut posséder des constantes d’interfaces, elles diffèrent des constantes de classes dans le sens où on ne peut pas les redéfinir ni dans les classes qui l’implémentent ni dans les interfaces qui en héritent

Méthodes 

Une méthode déclarée dans une interface n’a ni visibilité ni corps. C’est une signature de méthode qui impose aux classes l’implémentant de définir cette méthode en respectant la signature associée. Il est possible de modifier la signature en ajoutant des paramètres optionnels

Exemple d’utilisation

<?php 
interface Usine { 
   function demarrer();
   function arreter(); 
   function alimenter($param1); 
} 
class Voiture implements Usine {
   function demarrer(){
     echo __METHOD__; 
   } 
   function arreter(){
     echo __METHOD__; 
   } 
   public function alimenter($p1, $p2 = null){ 
     echo __METHOD__; 
   }
} 
  $v1 = new Voiture();
  $v1->demarrer(); // affiche Voiture::demarrer

 

Une méthode d’interface étant implicitement ou explicitement publique, elle doit être nécessairement définie en tant que publique dans la classe implémentant.