PHP -Tutorial

PHP-HOME PHP-Einführung PHP-Installation PHP-Syntax PHP-Kommentare PHP-Variablen PHP-Echo / Drucken PHP-Datentypen PHP-Strings PHP-Nummern PHP-Mathematik PHP-Konstanten PHP-Operatoren PHP If...Else...Elseif PHP-Schalter PHP-Schleifen PHP-Funktionen PHP-Arrays PHP-Superglobals PHP-RegEx

PHP -Formulare

Handhabung von PHP-Formularen PHP-Formularvalidierung PHP-Formular erforderlich PHP-Formular-URL/E-Mail PHP-Formular vollständig

PHP- Erweitert

PHP-Datum und -Zeit PHP einschließen Umgang mit PHP-Dateien PHP-Datei öffnen/lesen PHP-Datei erstellen/schreiben Hochladen von PHP-Dateien PHP-Cookies PHP-Sitzungen PHP-Filter PHP-Filter für Fortgeschrittene PHP-Callback-Funktionen PHP-JSON PHP-Ausnahmen

PHP -OOP

PHP Was ist OOP PHP-Klassen/Objekte PHP-Konstruktor PHP-Destruktor PHP-Zugriffsmodifikatoren PHP-Vererbung PHP-Konstanten Abstrakte PHP-Klassen PHP-Schnittstellen PHP-Eigenschaften Statische PHP-Methoden Statische PHP-Eigenschaften PHP-Namespaces PHP-Iterables

MySQL- Datenbank

MySQL-Datenbank MySQL Connect MySQL-DB erstellen MySQL-Tabelle erstellen MySQL-Daten einfügen MySQL Letzte ID abrufen MySQL Mehrfach einfügen MySQL vorbereitet MySQL Select-Daten MySQL-Wo MySQL-Reihenfolge nach MySQL-Daten löschen MySQL-Update-Daten MySQL-Limit-Daten

PHP- XML

PHP-XML-Parser PHP-SimpleXML-Parser PHP SimpleXML - Get PHP-XML-Expat PHP-XML-DOM

PHP -AJAX

AJAX-Einführung AJAX-PHP AJAX-Datenbank AJAX-XML AJAX Live-Suche AJAX-Umfrage

PHP- Beispiele

PHP-Beispiele PHP-Compiler PHP-Quiz PHP-Übungen PHP-Zertifikat

PHP- Referenz

PHP-Übersicht PHP-Array PHP-Kalender PHP-Datum PHP-Verzeichnis PHP-Fehler PHP-Ausnahme PHP-Dateisystem PHP-Filter PHP-FTP PHP-JSON PHP-Schlüsselwörter PHP-Libxml PHP-Mail PHP-Mathematik PHP-Sonstiges PHP MySQLi PHP-Netzwerk PHP-Ausgabesteuerung PHP-RegEx PHP-SimpleXML PHP-Stream PHP-String Umgang mit PHP-Variablen PHP-XML-Parser PHP-Zip PHP-Zeitzonen

PHP OOP - Schnittstellen


PHP - Was sind Schnittstellen?

Mit Schnittstellen können Sie angeben, welche Methoden eine Klasse implementieren soll.

Schnittstellen machen es einfach, eine Vielzahl unterschiedlicher Klassen auf die gleiche Weise zu verwenden. Wenn eine oder mehrere Klassen dieselbe Schnittstelle verwenden, wird dies als "Polymorphismus" bezeichnet.

Schnittstellen werden mit dem interfaceSchlüsselwort deklariert:

Syntax

<?php
interface InterfaceName {
  public function someMethod1();
  public function someMethod2($name, $color);
  public function someMethod3() : string;
}
?>

PHP - Schnittstellen vs. abstrakte Klassen

Schnittstellen ähneln abstrakten Klassen. Der Unterschied zwischen Schnittstellen und abstrakten Klassen ist:

  • Schnittstellen können keine Eigenschaften haben, während abstrakte Klassen dies können
  • Alle Schnittstellenmethoden müssen öffentlich sein, während abstrakte Klassenmethoden öffentlich oder geschützt sind
  • Alle Methoden in einer Schnittstelle sind abstrakt, sodass sie nicht im Code implementiert werden können und das Schlüsselwort abstract nicht erforderlich ist
  • Klassen können eine Schnittstelle implementieren und gleichzeitig von einer anderen Klasse erben

PHP - Verwenden von Schnittstellen

Um eine Schnittstelle zu implementieren, muss eine Klasse das implementsSchlüsselwort verwenden.

Eine Klasse, die eine Schnittstelle implementiert, muss alle Methoden der Schnittstelle implementieren.

Beispiel

<?php
interface Animal {
  public function makeSound();
}

class Cat implements Animal {
  public function makeSound() {
    echo "Meow";
  }
}

$animal = new Cat();
$animal->makeSound();
?>

Nehmen wir anhand des obigen Beispiels an, dass wir eine Software schreiben möchten, die eine Gruppe von Tieren verwaltet. Es gibt Aktionen, die alle Tiere ausführen können, aber jedes Tier tut es auf seine eigene Weise.

Mithilfe von Schnittstellen können wir Code schreiben, der für alle Tiere funktioniert, auch wenn sich jedes Tier anders verhält:

Beispiel

<?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();
}
?>

Beispiel erklärt

Cat, Dog und Mouse sind alle Klassen, die die Animal-Schnittstelle implementieren, was bedeutet, dass sie alle in der Lage sind, mit der makeSound()Methode einen Ton zu erzeugen. Aus diesem Grund können wir alle Tiere durchlaufen und ihnen sagen, dass sie ein Geräusch machen sollen, auch wenn wir nicht wissen, um welche Art von Tier es sich handelt.

Da die Schnittstelle den Klassen nicht vorschreibt, wie die Methode zu implementieren ist, kann jedes Tier auf seine eigene Weise ein Geräusch erzeugen.