Les interfaces en PHP
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 la complexité et les détails de l’implémentation des méthodes. Une interface est définie comme une classe, mais avec le mot-clé interface. L’interface ne contient pas de propriétés ou de variables comme le cas dans une classe.
Exemple: Création d’une interface
L’exemple suivant définit une interface à l’aide du mot-clé interface.
<?php interface MyInterface { public function method1(); public function method2(); public function method3(); } ?>
Quelques points importants à retenir sur les interfaces en PHP :
- Une interface est constituée de méthodes qui n’ont pas d’implémentations, ce qui signifie que les méthodes d’interface sont des méthodes abstraites.
- Toutes les méthodes dans les interfaces doivent avoir une portée de visibilité public.
- Les interfaces sont différentes des classes car une classe peut hériter d’une seule classe alors que la classe peut implémenter une ou plusieurs interfaces.
Pour implémenter une interface, utilisez le mot-clé implements comme suit :
<?php class MyClass implements MyInterface { public function method1() { // Implémentation de la méthode 1 } public function method2(){ // Implémentation de la méthode 2 } public function method3(){ // Implémentation de la méthode 3 } } ?>
Exemple complète:
<?php interface MyInterface { public function method1(); public function method2(); public function method3(); } class MyClass implements MyInterface { public function method1() { echo "Méthode1 Appelé" . "\n"; } public function method2(){ echo "Méthode2 Appelé". "\n"; } public function method3(){ echo "Méthode3 Appelé". "\n"; } } $obj = new MyClass; $obj->method1(); $obj->method2(); $obj->method3(); ?>
La sortie :
Méthode1 Appelé Méthode2 Appelé Méthode3 Appelé
Implémenter plusieurs interfaces
Une classe peut implémenter plusieurs interfaces, séparées par des virgules.
class MyClass implements MyInterface1, MyInterface2, MyInterface3 { // code... }