Eine Schnittstelle in PHP, die als Interface bezeichnet wird, ist ein spezieller Typ einer Klasse, der nur die Methodensignaturen, aber nicht ihre Implementierungen definiert. Schnittstellen sind ein zentrales Konzept in der objektorientierten Programmierung (OOP) und dienen dazu, eine Struktur vorzugeben, die von anderen Klassen implementiert werden kann. Dies fördert die Flexibilität und Wiederverwendbarkeit des Codes.
```php
interface Bezahlbar {
public function bezahlen($betrag);
}
?>
```
In diesem Beispiel ist `Bezahlbar` eine Schnittstelle, die eine Methode `bezahlen` mit einem Parameter `$betrag` deklariert. Eine Schnittstelle kann keine Methodendefinitionen oder Eigenschaften enthalten – sie kann nur Methodensignaturen deklarieren.
```php
class Rechnung implements Bezahlbar {
public function bezahlen($betrag) {
echo “Rechnung bezahlt: “ . $betrag . “ Euro”;
}
}
?>
```
In diesem Beispiel implementiert die Klasse `Rechnung` die Schnittstelle `Bezahlbar`, und definiert die Methode `bezahlen`.
```php
interface Fahrzeug {
public function starten();
public function stoppen();
}
class Auto implements Fahrzeug {
public function starten() {
echo “Auto startet”;
}
public function stoppen() {
echo “Auto stoppt”;
}
}
class Motorrad implements Fahrzeug {
public function starten() {
echo “Motorrad startet”;
}
public function stoppen() {
echo “Motorrad stoppt”;
}
}
?>
```
Sowohl `Auto` als auch `Motorrad` implementieren die Schnittstelle `Fahrzeug` und müssen daher die Methoden `starten` und `stoppen` definieren. Auf diese Weise kann man Objekte verschiedener Klassen polymorph behandeln, solange sie dieselbe Schnittstelle implementieren.
```php
function fahreFahrzeug(Fahrzeug $fahrzeug) {
$fahrzeug->starten();
$fahrzeug->stoppen();
}
$auto = new Auto();
$motorrad = new Motorrad();
fahreFahrzeug($auto);
fahreFahrzeug($motorrad);
?>
```
In dieser Funktion `fahreFahrzeug` spielt es keine Rolle, ob das übergebene Objekt ein `Auto` oder ein `Motorrad` ist, solange es die Schnittstelle `Fahrzeug` implementiert.
Diese Quellen bieten eine detaillierte Erklärung und zusätzliche Beispiele zur Verwendung von Schnittstellen in PHP.