interfață php vs clasa abstractă

Ce este o clasă abstractă în PHP?
Trăsături în PHP

În această lecție extinsă, vom aprofunda în complexitatea funcționalității interfeței PHP. În această postare, ne vom uita la diferențele și asemănările dintre două concepte PHP cruciale: interfețe vs clase abstracte. Vom analiza sintaxa și cazurile de utilizare pentru fiecare, precum și beneficiile și dezavantajele utilizării interfețelor și claselor abstracte în codul dvs. La încheierea acestei sesiuni, veți ști când să utilizați interfețele PHP și când să utilizați clase abstracte, precum și cum să le aplicați în proiectele dvs. de programare.

Ce este o interfață în OOP?

  • O interfață este o clasă care conține doar metode abstracte.
  • Folosind clasa de interfață, putem specifica ce metode ar trebui să implementeze o clasă care extind interfața.
  • Spre deosebire de clasa abstract, nu trebuie să scrieți rezumate cu metodele, deoarece o interfață poate avea doar metode abstracte în ea.
  • interfață cuvântul cheie este folosit pentru a declara o clasă de interfață. Priviți următoarea sintaxă a unei clase de interfață în PHP.
<?php
interface InterfaceName {
  public function someMethod1();
  public function someMethod2($name, $color);
  public function someMethod3() : string;
}
?>

Deși clasele și interfețele abstracte sunt destul de asemănătoare, ele sunt logic diferite unele de altele.

Diferența dintre clasele de interfață și abstracte în PHP

Clasa de interfațăClasa abstractă
Nu poate conține proprietățiPoate conține proprietăți
Toate metodele sunt abstracte, iar cuvântul cheie abstract nu este necesar împreună cu metodele.Conține atât metode abstracte, cât și non-abstracte. Cuvântul cheie abstract este necesar pentru a declara metoda abstractă.
O clasă poate implementa o interfață împreună cu moștenirea de la o altă clasă. Înseamnă că o clasă copil poate implementa o interfață în același timp.O clasă copil (moștenită de la o altă clasă), nu poate implementa clasa abstractă.
Toate metodele trebuie să fie publice în ceea ce privește modificatorii de acces.Metodele pot fi fie publice, fie protejate cu privire la modificatorii de acces.
Interfețe vs clase abstracte

Exemplu de interfață în PHP

interfață cuvântul cheie este folosit pentru a declara o interfață în PHP. Uitați-vă la următoarea implementare a interfeței în PHP.

<?php
interface Unit {
  public function standard_unit();
}

class Weight implements Unit {
  public function standard_unit() {
    echo "Kg";
  }
}

$weight= new Weight();
$weight->standard_unit();
?>
  • În exemplul de mai sus. creăm o clasă de interfață Unit care conține o metodă standard_unit.
  • Apoi creăm o altă clasă greutate care pune în aplicare Unitate interfață și definește metoda standard_unit în ea.
  • Din exemplul de mai sus, putem vedea că clasa care folosește interfața își poate suprascrie metoda și o poate folosi în felul său. Să presupunem că avem o altă lungime de clasă, poate folosi metoda standard_unit în felul său.
  • Putem scrie logica care va funcționa pentru toate mărimile fizice care au unități SI. Uită-te la următorul exemplu.
<?php
// Interface definition
interface Unit {
  public function standard_unit();
}

// Class definitions
class Weight implements Unit {
  public function makeSound() {
    echo " kg";
  }
}

class Length implements Unit {
  public function standard_unit() {
    echo " meter";
  }
}

class Temperature implements Unit {
  public function standard_unit() {
    echo " celcius";
  }
}

// Create a list of Physical Quanitites
$weight = new Weight();
$length = new Length();
$temperature = new Temperature();
$quantities= array($weight, $length, $temperature);

// Tell the quantities to use its standard unit
foreach($quantities as $quantities) {
  $quantitiy->standard_unit();
}
?>
  • În exemplul de mai sus, creăm clase similare ca în exemplul anterior.
  • Clasele de greutate, lungime și temperatură implementează aceeași interfață și pot folosi metoda standard_unit în felul său. Deci, facem o matrice a obiectelor acestor clase și le facem buclă unul câte unul pentru a clasifica metoda standard_unit.

Referință la documentația oficială a interfeței PHP 8.

Ce este o clasă abstractă în PHP?
Trăsături în PHP
en English
X
Derulaţi în sus