Mit dem Prinzip der Polymorphie (Vielgestaltigkeit) wird ein dynamisches Verhalten von Methoden verfolgt, das von Anzahl und Typ der übergebenen Parameter abhängt. Im Falle einer dynamisch getypten Programmiersprache wie PHP gestaltet sich dies jedoch anders als in einer statisch getypten Programmiersprache wie beispielsweise Java. Für unterschiedliche Anzahl oder Typen der erwarteten Parameter einer Methode schreibt man beispielsweise in Java mehrere Methoden mit dem gleichen Namen.
Beispiel 1.6: Polymorphie in Java
class Klasse {
public void methode(String variable) {
System.out.println("Ein String wurde übergeben.");
}
public void methode(int variable) {
System.out.println("Ein Integerwert wurde übergeben.");
}
}
In PHP ist die Deklaration von mehreren Methoden des gleichen Namens nicht vorgesehen. Polymorphes Verhalten von Methoden kann in PHP auf eine der folgenden Arten erreicht werden:
Eine Methode kann wegen der dynamischen Typisierung einen Parameter akzeptieren, der unterschiedliche Typen enthalten darf.
Eine Methode kann eine variable Anzahl an Parametern akzeptieren, indem optionale Parameter mit Standardwerten versehen und an das Ende der Parameterliste gesetzt werden.
Häufig verwendet man ein assoziatives Array als einzigen Parameter einer Methode. Dies ermöglicht eine variable Anzahl an (benannten) Parametern für die Methode, deren Reihenfolge aufgrund der Assoziativität beliebig sein kann.
Beispiel 1.7: Polymorphie in PHP
<?php
class Klasse {
public function methode($variable) {
if (is_string($variable)) {
print "Ein String wurde übergeben.\n";
}
else if (is_integer($variable)) {
print "Ein Integerwert wurde übergeben.\n";
}
}
}
?>