Interfaces
Interfaces erlauben die Erzeugung von Code, der spezifiziert, welche Methoden eine Klasse implementieren muss, ohne definieren zu müssen, wie diese Methoden behandelt werden.
Interfaces werden mit dem interface Schlüsselwort auf die selbe Weise wie eine Standardklasse definiert, ohne dass eine der Methoden ihren Inhalt definiert.
Alle in einem Interface deklarierten Methoden müssen public sein, dies liegt in der Natur eines Interfaces.
implements
Um ein Interface zu implementieren wird der implements Operator benutzt. Alle Methoden des Interfaces müssen innerhalb der Klasse implementiert werden; Unterlassung wird zu einem fatalen Fehler führen. Klassen dürfen, falls dies gewünscht wird, mehr als ein Interface implementieren, indem man die Interfaces von einander mit einem Komma abtrennt.
Hinweis: Eine Klasse kann nicht zwei Interfaces, die sich identische Funktionsnamen teilen, implementieren, da dies zu Doppeldeutigkeiten führen würde.
Beispiele
Example#1 Interface Beispiel
<?php
// Deklariere das Interface 'iTemplate'
interface iTemplate
{
public function setVariable($name, $var);
public function getHtml($template);
}
// Implementiere das Interface
// Dies funktioniert
class Template implements iTemplate
{
private $vars = array();
public function setVariable($name, $var)
{
$this->vars[$name] = $var;
}
public function getHtml($template)
{
foreach($this->vars as $name => $value) {
$template = str_replace('{' . $name . '}', $value, $template);
}
return $template;
}
}
// Dies wird nicht funktionieren
// Fatal error: Class BadTemplate contains 1 abstract methods
// and must therefore be declared abstract (iTemplate::getHtml)
class BadTemplate implements iTemplate
{
private $vars = array();
public function setVariable($name, $var)
{
$this->vars[$name] = $var;
}
}
?>
Siehe auch den instanceof Operator.