4.6.1 Unterprogramme (function) in PHP
Ein Unterprogramm in PHP ist eine function
. Hier ein Beispiel:
Die Funktion wird in Zeile 1 definiert und es wird angegeben, welche Variablen (hier $x und $y) an die Funktion übergeben werden. In den Zeilen 2-5 steht, was die Funktion mit den Variablen macht.
In Zeile 9 wird die Funktion aufgerufen und es werden die Werte der Variablen $a und $b an die Funktion übergeben.
Um zu kennzeichnen, dass es sich bei einem Unterprogramm um eine Prozedur (keine Rückgabe) handelt, verwendet man in der Dokumentation häufig folgende Syntax:
Den gesamten Sourcecode schreibt man dann wie folgt.
Werte aus einer Funktion zurückgeben return
Im bisherigen Beispiel hatten wir keine Rückgabe, sondern die Funktion hat mit echo
direkt Daten ausgegeben (also über das PHP-Modul des Webservers zum Browser geschickt). Oftmals möchten wir aber das Ergebnis einer Funktion im Hauptprogramm nutzen. Dann arbeiten wir mit return
.
Achten Sie darauf, wie sich die Zeilen 4 & 9 geändert haben. Die Ausgabe erfolgt nun nicht mehr in der Funktion, sondern zuerst wurde das Ergebnis mit return
ans Hauptprogramm übergeben und dort dann ausgegeben.
Initialisieren einer Funktionsvariable mit static
Wenn innerhalb einer function
eine Variable nur einmal initialisiert werden soll, so kann dies mit static
erfolgen. Dies ist oft nützlich. So könnte man beispielsweise bei einem Online-Shop zählen, wie viele unterschiedliche Waren in den Warenkorb gelegt worden sind. Man müsste hierzu nur eine Funktion haben, die beim ersten Mal "0" ist und dann mit jeder Ware im Warenkorb hochgezählt wird.
Verwendung von global
Variablen haben in PHP grundsätzlich einen lokalen Gültigkeitsbereich. Also: alle Variablen innerhalb einer Funktion können nur in der Funktion selbst genutzt werden und alle Variablen außerhalb einer Funktion sind in der Funktion wiederum nicht nutzbar.
Somit gilt: eine Variable $name
kann innerhalb einer Funktion stehen und vielleicht gibt es auch eine Variable $name
außerhalb der Funktion. So etwas findet man sehr oft und es muss klar sein, dass dies zwei verschiedene Variablen sind.
Wichtig: Die Verwendung von global
sollte vermieden werden, da dies zu unerwartetem Verhalten und schwer nachvollziehbarem Code führen kann. Stattdessen sollten Variablen als Parameter an Funktionen übergeben werden, um die Abhängigkeiten klarer zu machen und den Code besser testbar zu machen.
Verwendung von Referenzen
Man kann function add(&$x, &$y)
schreiben und dann werden an die Variable nicht die Werte, sondern Referenzen übergeben.
Wichtig: Die Verwendung von Referenzen kann in einigen spezifischen Fällen nützlich sein, sollte aber sparsam eingesetzt werden und nur dort, wo es wirklich notwendig ist. In der Regel ist es besser, Werte explizit zurückzugeben, um den Code verständlicher zu machen und unerwartete Seiteneffekte zu vermeiden.