Interface

dg87

Erfahrenes Mitglied
Guten Abend,

Eigentlich hat ein Interface ja nur leere Methoden also halt nur die Signatur.
Beim arrayaccess Interface stehen ja auch nur die Methoden erstmal leer da. Aber warum weis php bei diesem Interface, dass es die Klasse wie ein Array behandeln soll? Also ich versteh schon was es macht aber mir ist nicht klar, warum php genau bei diesem Interface so reagiert. Oder ist das einfach so fest drinnen weil es von der spl kommt?
 
Das geht, weil es einfach so definiert wurde. Also kurzum so: "schau nach, ob es die benötigten Methoden aus ArrayAccess hat. wenn ja, dann darfst du es wie ein Array behandeln, ansonsten eben nicht."
 
Ein Interface beschreibt nur, wie eine Klasse aussehen muss, die das Interface implementiert. Das Interface ist also eine Schablone für eine Klasse. Du führst auch keine Methoden an der Schnittstelle (nichts anderes heißt Interface) aus, sonder in der konkret implementierten Klasse. Ein Interface wird nur benötigt, wenn man sog. Permutation haben will. Das heißt, wenn es mehrere verschiedene Klassen gibt, die nach dem Interface implementiert werden sollen aber die gleichen Methoden mit den gleichen Parametern anbieten sollen. Um eben eine wohl-definierte Schnittstelle zu haben.

Kurz: Ein Interface versteckt also die konkrete Implementierung. Ein gutes Beispiel wäre der Zugriff auf Datenbank-Server, bei dem es wichtig ist, eine abstrakte Schnittstelle für den Zugriff von Applikationen auf eine beliebige Datenbank (MySQL, PostgreSQL, MSSQL, Oracle, IBMDB, etc.pp).
 
Zurück