mehrere gleichnamige PHP Funktionen

vom 22.11.2011, 19:19 Uhr

Ich habe heute etwas in PHP programmiert. Da ich in der Schule vor einiger Zeit mit Java angefangen habe, habe ich mittlerweile die Vorteile von Funktionen kennen gelernt. In meinem PHP Programm habe ich mir einige Funktionen geschrieben, um mir so viele Zeilen Code zu sparen. Bei Java kann man mehreren Funktionen den gleichen Namen geben. Man ändert dann einfach nur die Übergabewerte an die Funktion, falls eben einige Übergabewerte optional sind.

Bei meinem PHP Programm hat das leider nicht funktioniert. Dort kann man scheinbar solche optionalen Übergabeparameter nicht einstellen oder? Muss ich jetzt jede Funktion anders benennen? Dadurch würden auch wieder viele Probleme auftreten können und es wäre nicht mehr so übersichtlich.

Benutzeravatar

» hennessy221 » Beiträge: 5132 » Talkpoints: -1,94 » Auszeichnung für 5000 Beiträge



Ich kenne mich mit Java-Programmierung leider gar nicht aus. In PHP kann ich aber schon etwas weiterhelfen. Natürlich kann man einen Namen nicht an mehrere Funktion geben. Stell dir vor, du schreibst eine Funktion, nennen wir sie der Einfachheit halber function. Nun definierst du in dieser Funktion, dass zum Beispiel eine Schleife bis zum Erreichen der Zahl X ausgeführt werden soll. Später definierst du eine andere Funktion, die du jetzt auch function nennst, und schreibst rein, dass diese Funktion immer wenn sie aufgerufen wird ein "false" returnt.

Später willst du deine Funktion woanders ansprechen. Darum rufst du sie beim Namen auf, nämlich function. Woher soll denn der Code jetzt wissen, ob er die Schleife ausführen soll, oder ob er die Aktion auslösen soll, die "false" zurückgibt? Beides machen kann er ja schlecht, denn es sind zwei verschiedene Funktionen und darum kommt es zu einem Fehler.

Wo liegt denn das Problem darin, deine Funktionen unterschiedlich (und übrigens möglichst sinnvoll und logisch!) zu benennen? Was macht dir mehr Arbeit daran, einen anderen Namen einzugeben wenn du sie wieder aufrufst? Bei PHP (und soweit ich weiß auch bei jeder anderen Programmierung) ist es üblich und nur vernünftig, Funktionen beschreibend und sinngemäß zu benennen. Funktionen sollten also möglichst auf englisch in etwa so heißen wie das, wozu sie da sind. Das dient der Übersichtlichkeit sogar sehr, und reduziert sie nicht, wie du meinst. Dir persönlich mag das im ersten Moment vielleicht so vorkommen, wenn du dir schon "unpraktische" Verhaltensmuster in der Java-Programmierung angewöhnt hast.

Benutzeravatar

» Taline » Beiträge: 3594 » Talkpoints: 0,75 » Auszeichnung für 3000 Beiträge


Bei vielen Programmiersprachen (z.b. Java) ist das Überladen von Methoden nichts Ungewöhnliches. Beim Überlade kann man mehreren Methoden gleich benennen, muss aber sicherstellen, dass sie sich anhand der Signatur unterscheiden, d.h. entweder unterschiedliche Anzahl der Parameter, oder die Datentypen müssen sich unterscheiden.

Es gibt viele Beispiele, wo das Überladen Sinn macht. Manchmal hat man mehrere Funktionen, die das gleiche tun, aber verschiedene Parameter erwarten. Ein sehr einfaches Beispiel ist die Max Funktion, die z.B. einmal das Maximum aus zwei Zahlen bestimmt oder aus drei oder eben auch aus einem Array mit Zahlen. Man könnte jetzt natürlich auch mehrere Max Funktionen schreiben und die Max1, Max2 usw. benennen. Da ich die Funktionen selber geschrieben habe, weiß ich welche Funktion welche Parameter erwartet, aber Jemand der meine Funktionen benutzen möchte müsste erst schauen, welche Parameter welche Funktion erwartet, um die passende Funktion zu finden. Bei 4 – 5 verschiedenen Funktionen ist das nicht tragisch, aber in manchen Beispielen kommt man dann schon auf über 10 Funktionen.

Bei PHP ist es nicht möglich zwei Funktionen gleich zu nennen. Aber man kann das etwas umständlich mit „magischen Funktionen“ realisieren. Ich selber habe so was in PHP noch nicht gemacht, aber über Google findet man da einiges zu. Einfach nach den Stichworten überladen und php suchen ;)

» Killyouridols » Beiträge: 517 » Talkpoints: 35,37 » Auszeichnung für 500 Beiträge



Ähnliche Themen

Weitere interessante Themen

^