Les interfaces pour PHP orienté objet

Dans ce tuto, nous allons voir les exemples d’interface lors de la programmation en PHP orienté objet. Les interfaces sont l’un des principaux éléments constitutifs du modèle SOLID.

Qu’est-ce qu’une interface?

Une interface permet aux utilisateurs de créer des programmes, en spécifiant les méthodes publiques qu’une classe doit implémenter, sans impliquer les complexités et les détails de la façon dont les méthodes particulières sont implémentées. Il est généralement appelé le prochain niveau d’abstraction. Il ressemble aux méthodes abstraites, ressemblant aux classes abstraites. Une interface est définie comme une classe est définie mais avec le mot clé class remplacé par le mot clé interface et uniquement les prototypes de fonction. L’interface ne contient aucune variable de données. L’interface est utile dans la mesure où elle garantit de maintenir une sorte de métadonnées pour toutes les méthodes sur lesquelles un programmeur souhaite travailler.

Syntaxe d’une interface

Quand on regarde le code, une interface ressemble presque à une définition de classe. Au lieu d’utiliser le mot-clé class, nous utilisons simplement le mot-clé interface lors du codage. De plus, les méthodes que nous définissons dans l’interface n’auront pas d’accolades {}, car il n’y a pas de logique. Voyons un exemple d’interface.

<?php  
  
interface monInterface { 
   public  function methodA(); 
   public  function methodB(); 
}  
  
?> 

Simple, non ? 🙂

Peu de caractéristiques d’une interface sont:

  • Une interface se compose de méthodes qui n’ont pas d’implémentation, ce qui signifie que les méthodes d’interface sont des méthodes abstraites
  • Toutes les méthodes des interfaces doivent avoir une portée de visibilité publique.
  • Les interfaces sont différentes des classes car la classe ne peut hériter que d’une classe alors que la classe peut implémenter une ou plusieurs interfaces.

Pour implémenter une interface, utilisez l’opérateur implements comme suit:

<?php 
  
class MyClassName implements MyInterfaceName{ 
   public  function methodA() {  
  
     // method A implementation 
   }  
   public  function methodB(){  
  
     // method B implementation 
   }  
} 
  
?> 

Classe concrète: La classe qui implémente une interface est appelée la classe concrète. Il doit implémenter toutes les méthodes définies dans une interface. Les interfaces du même nom ne peuvent pas être implémentées en raison d’une erreur d’ambiguïté. Comme toute classe, une interface peut être étendue à l’aide de l’opérateur extend comme suit:

<?php  
  
interface monInterface1{ 
  
    public  function methodA(); 
   
} 
  
interface monInterface2 extends monInterface1{ 
  
    public  function methodB(); 
} 
  
?> 

Exemple :

<?php  
  
interface monInterface{ 
  
    public function method1(); 
    public function method2(); 
  
} 
  
class Voiture implements monInterface{ 
  
    public function method1(){ 
        echo "Method1 Called" . "\n"; 
    } 
  
    public function method2(){ 
        echo "Method2 Called". "\n"; 
    } 
}  
  
$obj = new Voiture; 
$obj->method1(); 
$obj->method2(); 
  
?> 

Avantages de l’interface PHP

  • Une interface permet aux classes non liées d’implémenter le même ensemble de méthodes, quelle que soit leur position dans la hiérarchie d’héritage de classe.
  • Une interface peut modéliser plusieurs héritages car une classe peut implémenter plus d’une interface alors qu’elle ne peut étendre qu’une seule classe.
  • L’implémentation d’un héritage sauvera l’appelant de l’implémentation complète des méthodes objet et se concentrera uniquement sur l’interface des objets, par conséquent, l’interface de l’appelant reste inchangée.