PHP OOP - Interfaces
PHP - Wat zijn interfaces?
Met interfaces kunt u specificeren welke methoden een klasse moet implementeren.
Interfaces maken het gemakkelijk om verschillende klassen op dezelfde manier te gebruiken. Wanneer een of meer klassen dezelfde interface gebruiken, wordt dit "polymorfisme" genoemd.
Interfaces worden gedeclareerd met het interface
trefwoord:
Syntaxis
<?php
interface InterfaceName {
public function someMethod1();
public function someMethod2($name, $color);
public function
someMethod3() : string;
}
?>
PHP - Interfaces versus abstracte lessen
Interface is vergelijkbaar met abstracte klassen. Het verschil tussen interfaces en abstracte klassen is:
- Interfaces kunnen geen eigenschappen hebben, terwijl abstracte klassen dat wel kunnen
- Alle interfacemethoden moeten openbaar zijn, terwijl abstracte klassenmethoden openbaar of beschermd zijn
- Alle methoden in een interface zijn abstract, dus ze kunnen niet in code worden geïmplementeerd en het abstracte trefwoord is niet nodig
- Klassen kunnen een interface implementeren en tegelijkertijd erven van een andere klasse
PHP - Interfaces gebruiken
Om een interface te implementeren, moet een klasse het implements
sleutelwoord gebruiken.
Een klasse die een interface implementeert, moet alle methoden van de interface implementeren.
Voorbeeld
<?php
interface Animal {
public function makeSound();
}
class Cat implements Animal {
public function makeSound() {
echo "Meow";
}
}
$animal = new Cat();
$animal->makeSound();
?>
Laten we uit het bovenstaande voorbeeld zeggen dat we software willen schrijven die een groep dieren beheert. Er zijn acties die alle dieren kunnen doen, maar elk dier doet het op zijn eigen manier.
Met behulp van interfaces kunnen we een code schrijven die voor alle dieren kan werken, zelfs als elk dier zich anders gedraagt:
Voorbeeld
<?php
// Interface definition
interface Animal {
public
function makeSound();
}
// Class definitions
class Cat
implements Animal {
public function makeSound() {
echo " Meow ";
}
}
class Dog implements Animal {
public function makeSound()
{
echo " Bark ";
}
}
class Mouse implements Animal {
public function makeSound() {
echo " Squeak ";
}
}
// Create a list
of animals
$cat = new Cat();
$dog = new Dog();
$mouse = new
Mouse();
$animals = array($cat, $dog, $mouse);
// Tell the animals
to make a sound
foreach($animals as $animal) {
$animal->makeSound();
}
?>
Voorbeeld uitgelegd
Kat, Hond en Muis zijn allemaal klassen die de Animal-interface implementeren, wat betekent dat ze allemaal een geluid kunnen maken met behulp van de makeSound()
methode. Hierdoor kunnen we door alle dieren lopen en ze vertellen dat ze een geluid moeten maken, zelfs als we niet weten wat voor soort dier ze zijn.
Omdat de interface de klassen niet vertelt hoe de methode moet worden geïmplementeerd, kan elk dier op zijn eigen manier een geluid maken.