Treci la conținutul principal

Interfețe în PHP

O interfață este o listă de metode publice pe care o clasă TREBUIE să le ofere. Spune ce trebuie să existe, dar nu spune cum funcționează fiecare metodă.

Declari o interfață cu ajutorul cuvântului cheie interface, iar fiecare metodă din ea trebuie să fie public.

O clasă adoptă o interfață cu ajutorul cuvântului cheie implements și, din acel moment, trebuie să implementeze toate metodele interfeței.

În exemplul următor, interfața Animal declară o singură metodă publică, makeSound(). Deoarece Cat și Dog implementează amândouă Animal, fiecare dintre ele trebuie să includă makeSound():

Exemplu

Cat și Dog oferă fiecare un corp propriu pentru makeSound(), ca să respecte interfața Animal:

Prompt
Creează o interfață PHP Animal cu o metodă makeSound(). Creează clasele Cat și Dog care implementează interfața Animal și afișează sunetele lor. Creează obiecte și apelează makeSound() pe fiecare.
Ieșire: script PHP

Sintaxa unei interfețe

Cum se scrie declarația unei interfețe:

index.php
<?php
interface InterfaceName {
  public function method1();
  public function method2();
}
?>

Implementarea unei interfețe

Cum implementează o clasă o interfață:

index.php
<?php
class ClassName implements InterfaceName{
  public function method1() {
    // some code
  }
  public function method2(){
    // some code
  }
}
?>

PHP - Interfețe vs. clase abstracte

Interfețele au multe în comun cu clasele abstracte, dar diferă în câteva privințe:

  • O clasă abstractă poate avea proprietăți; o interfață nu poate
  • Metodele unei interfețe sunt întotdeauna publice, în timp ce metodele abstracte pot fi publice sau protejate
  • Fiecare metodă a unei interfețe este abstractă, deci nu are implementare în cod, și nu trebuie să scrii cuvântul cheie abstract
  • O clasă poate extinde o altă clasă și poate implementa o interfață în același timp

Marele avantaj al interfețelor este că diferite clase pot fi folosite în același mod. Când una sau mai multe clase au în comun o interfață, numim acest lucru „polimorfism”.


PHP - Folosirea interfețelor

De data aceasta, interfața Animal declară două metode publice, fromFamily() și makeSound(). Cat și Dog implementează interfața, așa că fiecare clasă trebuie să includă ambele metode:

Exemplu

Cat și Dog implementează amândouă cele două metode ale interfeței:

Prompt
Creează o interfață PHP Animal cu metodele fromFamily() și makeSound(). Creează clasele Cat și Dog care implementează ambele metode, cu informații detaliate despre familie și sunete. Creează obiecte și apelează ambele metode.
Ieșire: script PHP