My book recommendations

Polymorphie

Nein, es handelt sich hier nicht um irgendeine seltene Krankheit. Unter Polymorhie versteht man in der Programmierung eine Art von Vielgestaltigkeit, bei der das dynamische Verhalten von Methoden verfolgt wird, welche von der Anzahl und des Typs der übergebenen Parameter abhängt.

Verständlich oder ? Etwa nicht ? Keine Angst ich werde gleich ein Beispiel zeigen in dem das ganze dann deutlich wird!

Die Polymorphie gibt es in PHP nicht wirklich, warum? Weil PHP eine dynamisch getypte Programmiersprache ist, viele sagen eine typenlose Programmiersprache. Was so viel bedeutet wie, wir müssen den Variablen nicht fest vorgeben was in Ihnen gespeichert wird, ob ein String, ein Integer oder Double oder oder oder. Wir können jederzeit von einem Typ zum anderen wechseln.

In anderen Programmiersprachen wie Java zum Beispiel muss man jeder Variable sagen welcher Typ in Ihr gespeichert wird und diesen kann man dann nicht mal eben ändern bzw man kann keinen String in einer als Integer definierten Variable speichern. Das nennt man dann eine statisch getypte Programmiersprache.

Daher gibt es in PHP keine direkte Polymorphie. Um das ganze jetzt etwas deutlicher zu machen möchte ich euch ein Beispiel aus der Java Welt zeigen.

class MyClassName {

 public void methodName (int variableName) {
 // Es wurde ein Integer übergeben
 }

 public void methodName (String variableName) {
 // Es wurde ein String übergeben
 }

}

Würden wir die Methode “methodName” jetzt aufrufen und Ihr als Parameter einen Integer mit übergeben, würde die erste Methode auufgerufen werden. Rufen wir die gleiche Methode auf aber übergeben Ihr einen String als Parameter, wird die zweite Methode aufgerufen. Es wird also überprüft welcher Typ übergeben wurde und entsprechend mit den Typen der Methodensignatur verglichen.

Das gleiche können wir aber auch mit der Anzahl der Parameter machen

class MyClassName {

 public void methodName (int variableName, String variableName) {
 // Es wurde ein Integer und ein String übergeben
 }

 public void methodName (int variableName) {
 // Es wurde ein Integer übergeben
 }

}

Rufen wir die Methode “methodName” mit nur einem Parameter, einen Integer Parameter auf, wird die zweite Methode aufgerufen. Rufen wir aber die Methode mit einem Integer UND einem String Parameter auf, ja richtig, dann wird die zweite Methode aufgerufen.

Das bedeutet Vielgestaltigkeit!

Soviel dazu, jetzt habe ich aber gesagt das PHP eine typenlose Sprache ist. Daher dann die Deklaration von mehreren Methoden des gleichen Namens nicht verwendet werden. Wie klappt das dann in PHP ?

Es bieten sich folgende Möglichkeiten an:
Eine Methode kann einen Parameter akzeptieren der unterschiedliche Typen enthält. Über eine if Bedingungen überprüfen wir den Typen und agieren entsprechend

class MyClassName {

 public function methodName ($variableName) {
 if (is_string($variableName)) {
 // Die Variable ist ein String
 } elseif (is_integer($variableName)) {
 // Die Variable ist ein Integer
 } elseif (is_array($variableName)) {
 // Die Variable ist ein Array
 }
 // usw.
 }

}

Wenn noch fragen offen sind könnt Ihr gerne die Kommentarfunktion benutzen!

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn