Gränssnitt i PHP

I

I den här handledningen kommer vi att lära oss gränssnittet i PHP.

Vad är ett gränssnitt i OOP?

  • Ett gränssnitt är en klass som endast innehåller abstrakta metoder.
  • Genom att använda gränssnittsklassen kan vi specificera vilka metoder en klass ska implementera som utökar gränssnittet.
  • Till skillnad från abstrakt klass behöver du inte skriva abstrakt med metoderna eftersom ett gränssnitt bara kan ha abstrakta metoder i sig.
  • gränssnitt nyckelord används för att deklarera en gränssnittsklass. Titta på följande syntax för en gränssnittsklass i PHP.
<?php
interface InterfaceName {
  public function someMethod1();
  public function someMethod2($name, $color);
  public function someMethod3() : string;
}
?>

Även om abstrakta klasser och gränssnitt är ganska lika skiljer de sig logiskt från varandra.

Skillnaden mellan gränssnitt och abstrakt klasser i PHP

GränssnittsklassAbstrakt klass
Kan inte innehålla egenskaperKan innehålla egenskaper
Alla metoder är abstrakta och abstrakta nyckelord krävs inte tillsammans med metoder.Con innehåller både abstrakta och icke-abstrakta metoder. Abstrakt nyckelord krävs för att deklarera abstrakt metod.
En klass kan implementera ett gränssnitt tillsammans med att ärva från en annan klass. Det betyder att en barnklass kan implementera ett gränssnitt samtidigt.En barnklass (ärvd från en annan klass) kan inte implementera den abstrakta klassen.
Alla metoder måste vara offentliga med avseende på åtkomstmodifierare.Metoder kan antingen vara offentliga eller skyddade med avseende på åtkomstmodifierare.
Gränssnitt vs abstrakta klasser

Exempel på gränssnitt i PHP

gränssnitt nyckelord används för att deklarera ett gränssnitt i PHP. Titta på följande implementering av gränssnittet i PHP.

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

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

$weight= new Weight();
$weight->standard_unit();
?>
  • I exemplet ovan. vi skapar en gränssnittsklass Unit som innehåller en metod standard_unit.
  • Sedan skapar vi en annan klass vikt som implementerar Enhet gränssnittet och definierar standard_unit-metoden i det.
  • Från exemplet ovan kan vi se att klassen som använder gränssnitt kan åsidosätta sin metod och kan använda den på sitt eget sätt. Låt oss säga att vi har en annan klasslängd, den kan använda standard_unit-metoden på sitt eget sätt.
  • Vi kan skriva logiken som kommer att fungera för alla fysiska storheter som har SI-enheter. Titta på följande exempel.
<?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();
}
?>
  • I exemplet ovan skapar vi liknande klasser som i föregående exempel.
  • Vikt-, längd- och temperaturklasserna implementerar samma gränssnitt och kan använda standard_unit-metoden på sitt eget sätt. Så vi gör en array av objekten i dessa klasser och loopar dem en efter en för att klassificera standard_unit-metoden.

Hänvisning till den officiella PHP 8-gränssnittsdokumentationen.

Lägg till kommentar

Lärarnätverk

Lär dig PHP från A till Ö