7 Funktionen

  • Größere Programme oder Skripte werden meist unübersichtlich und oft führen sie die gleichen oder zumindest ähnliche Aufgaben wiederholt aus. Funktionen ermöglichen die Modularisierung des Quelltextes und können mehrfach aufgerufen werden, ohne dass deren Code dabei doppelt oder dreifach im Skript vorkommt. Funktionen haben wir sogar schon genutzt: "echo" zur Ausgabe ist beispielsweise eine vordefinierte Funktion, welche wir praktischerweise schon gleich am Anfang verwendet haben. (beispiel_14.php) 01: <?php 02: 03: function trennlinie() 04: { 05: echo "****************************************"; 06: } 07: 08: trennlinie(); 09: echo "PHP ist toll!"; 10: trennlinie(); 11: 12: ?> Auch wenn Beispiel 14 noch keinen richtigen Sinn ergibt, da die Funktion selbst nur einen Befehl enthält, ist es doch ein mögliches Skript. Bevor wir eine Funktion benutzen können, muss die Funktion definiert werden. Dies geschieht in Beispiel 14 in der Zeile 3 bis 6. Die Definition beginnt mit "function", anschließend folgt der Bezeichner (hier ist es "trennlinie") und zwei Klammern "()", zu denen ich später nochmal zurückkomme. Zwischen den geschweiften Klammern kommt der Anweisungsblock der Funktion. Damit wäre die Funktion auch schon definiert. In Zeile 8 sowie 10 wird die Funktion aufgerufen (mit den noch mysteriösen Klammern): Einfach der Bezeichner und wie am Ende jeder PHP-Zeile ein Strichpunkt. Beim Ausführen springt PHP also von der aufrufenden Zeile zur Definition der Funktion, führt deren Anweisungsblock aus und arbeitet die folgenden Zeilen nach dem Aufruf ab. Ein Funktionsaufruf ist überall möglich, auch von anderen Funktionen heraus. Kurz in diesem Zusammenhang etwas zum Programmierstil: PHP ist es grundsätzlich egal, wo die Funktionen im Quelltext definiert werden (außer innerhalb Verzweigungen, Schleifen oder anderen Funktionen), als Quasi-Standard ist es allerdings üblich, die Funktion ganz am Anfang direkt nach "<?php" zu definieren. Der Bezeichner einer Funktion ist gleichsam einem Variablen-Namen zu wählen: Erlaubt sind Buchstaben (außer Umlaute und scharfes S), Zahlen und als Sonderzeichen nur der Unterstrich "_". Das erste Zeichen des Bezeichners muss ein Buchstabe sein, zudem darf die Funktion nicht wie eine bereits vorhandene Funktion lauten. (beispiel_15.php) 01: <?php 02: 03: function trennlinie() 04: { 05: for(1=1; 1<=40; 1++) echo ""; 06: echo " "; 07: } 08: 09: trennlinie("*"); 10: echo "PHP ist toll!"; 11: trennlinie("*"); 12: 13: ?> Beispiel 15 demonstriert eine Funktion mit Parameterübergabe. Der Unterschied zur Funktion in Beispiel 14 zeigt sich im Kopf der Funktion. In den Klammern wird nämlich jetzt ein Parameter definiert. Dazu wird ein Variablennamen im Kopf festgelegt, der sich innerhalb der Funktion weiterverarbeiten lässt. Mehrere Parameter schreiben Sie einfach mit Kommata getrennt hintereinander. Beim Aufruf der Funktion lässt sich nun ein Wert übergeben. Mehrere Parameter müssen auch, wie beim Funktionskopf definiert, in der korrekten Reihenfolge und durch Kommata getrennt angegeben werden. Beispiel 16 zeigt schließlich noch eine Funktion mit Rückgabewert. Um einen Wert zurückzugeben, wird üblicherweise in der letzten Zeile der Funktion "return", gefolgt von einer Variable oder einem konstanten Wert, geschrieben. Aber auch ein Ausdruck ist möglich (Zeile 7). (beispiel_16.php) 01: <?php 02: 03: function trennlinie(, ) 04: { 05: = ""; 06: for(1=1; 1<=; 1++) = . ; 07: return . " "; 08: } 09: 10: echo trennlinie("*", 40); 11: echo "PHP ist toll!"; 12: echo trennlinie("*", 40); 13: 14: ?> Ohne Beispiel: Bei der Übergabe der Werte als Parameter an eine Funktion werden diese bei Änderung nur innerhalb der Funktion geändert (lokal). Global, also außerhalb der Funktion, bleibt der Parameter unverändert. Möchtest Du das Gegenteil erreichen, hilft ein Verweis durch vorstellen des kaufmännischen Unds "&" vor den Variablennamen im Funktionskopf für alle Aufrufe der Funktion oder im Aufruf selbst für nur diesen einen Aufruf.