Funktionen

Funktionen sind einfach gesagt eine Ansammlung von Anweisungen.

Für eine Funktion müssen 2 Schritte ausgeführt werden. Zuerst muss die Funktion deklariert bzw. definiert werden. Und als Zweites muss die Funktion aufgerufen werden, damit sie ausgeführt wird. Definiert wird die Funktion durch das Schlüsselwort "function", darauf folgt der Name der Funktion mit runden Klammern, die erst mal leer bleiben. Die Anweisungen der Funktion stehen in geschweiften Klammern. Aufgerufen wird die Funktion durch ihren Namen und den runden Klammern.

Aufbau einer Funktion

function ausgabe() {
 echo "Ausgabe einer Funktion";
}
ausgabe();

Für die Benennung der Funktionsnamen verwenden wir die gleichen Regeln wie bei den Variablennamen. Mit dem Unterschied dass nicht auf Groß- und Kleinschreibung geachtet wird. Ansonsten dürfen diese auch nur mit Buchstaben und dem Unterstrich beginnen und aus Buchstaben, Ziffern und Unterstrichen bestehen.


Parameter

Die Funktionalität der Funktionen steckt in der Funktion. Außerhalb der Funktion müssen wir nicht wissen, wie die Anweisungen im Inneren der Funktion aussehen. Um jetzt aber mit der Funktion arbeiten zu können, verwenden wir sogenannte Parameter, die wir der Funktion übergeben. Die Parameter werden in den runden Klammern geschrieben und verhalten sich wie Variablen, die innerhalb der Funktion verfügbar sind. Die Werte, die wir der Funktion übergeben möchten, schreiben wir zwischen die beiden Klammer des Funktionsaufrufs. Die Funktion gibt dann die übergebenen Werte aus.

Parameter an einer Funktion übergeben

function ausgabe($name, $alter) {
 echo "Mein Name ist $name und ich bin $alter Jahre alt.";
}
ausgabe("Hanna", 35);

Vorgabewert

Nicht immer ist es garantiert, dass ein Wert für den Parameter übergeben wird. Daher können wir für den Fall der fehlenden Parameter Standardwerte vorgeben.

Fehlende Parameter in einer Funktion

function ausgabe($name, $alter = "unbekannt viele") {
 echo "Mein Name ist $name und ich bin $alter Jahre alt.";
}
ausgabe("Hanna");
Hinweis

Der PHP-Interpreter kann nicht wissen, welcher Parameter fehlt. Darum werden die Parameter mit den Alternativwerten immer hinten angehangen. Der erste übergebene Parameter ist damit automatisch der Parameter, der mit der Variable "$name" interpretiert wird. Erst danach werden die Alternativwerte verwendet.


Flexible Anzahl von Parametern

Mit zu wenig übergebenen Parametern können wir jetzt umgehen, aber was ist, wenn wir zu viele Parameter übergeben? Hierfür verwenden wir den "Splat-Operator", er wird durch 3 aufeinanderfolgende Punkte (...) definiert und steht vor dem letzten Parameter. Der letzte Parameter nimmt dann alle zu viel übergebenen Parameter als Array auf. Um herauszufinden, wie viele Parameter wir zu viel haben, verwenden wir die Array-Funktion "count".

zuviel Parameter in einer Funktion

function ausgabe($name, $alter, ...$ueberladung) {
 echo "Mein Name ist $name und ich bin $alter Jahre alt.<br />";
 $zuViel = count($ueberladung); // Länge des Array
 echo "Es wurden " . $zuViel . " Parameter zu viel übergeben.";
}
ausgabe("Hanna", 35, "München", "Lila");

Gültigkeit von Variablen

Alle Variablen innerhalb einer Funktion sind lokal und nur innerhalb der Funktion gültig. Variablen außerhalb von Funktionen sind global, diese sind in PHP nur außerhalb der Funktion gültig.

Gültigkeit von Variablen

# Globale Variablen
$schuhe = "Stiefel";
$temperatur = -8;
function innen() {
 # Lokale Variablen
 $schuhe = "Hausschuhe";
 $temperatur = 19;
 echo $schuhe . " und " . $temperatur . "<br />";
}
innen();
echo $schuhe . " und " . $temperatur;

Wenn wir innerhalb von Funktionen aber die globale Variable verwenden möchten, dann setzen wir das Schlüsselwort "global" vor der Variable innerhalb der Funktion, um den Interpreter mitzuteilen, dass wir hier die globale Variable verwende möchten.

Gültigkeit von Variablen

# Globale Variablen
$schuhe = "Stiefel";
$temperatur = -8;
function innen() {
 # Lokale Variablen
 global $schuhe;
 $temperatur = 19;
 echo $schuhe . " und " . $temperatur . "<br />";
}
innen();
echo $schuhe . " und " . $temperatur;

In PHP gibt es das Array "$GLOBALS" welches alle globalen Variablen enthält.

Globale Variablen

# Globale Variablen
$schuhe = "Stiefel";
 function innen() {
  echo $GLOBALS["schuhe"];
}
innen();

Rückgabewert

Mit Parameter können wir Werte an eine Funktion übergeben. Mit dem Schlüsselwort "return" erhalten wir einen Rückgabewert von Funktionen. Der Aufruf "return" sorgt dafür, dass die Anweisungen in der Funktion sofort beendet werden und der Rückgabewert ausgegeben wird. Diesen Rückgabewert speichern wir am besten in eine Variable.

Rückgabewerte von Funktionen

function ausgabe($wochentag) {
 return "Heute ist: $wochentag.";
}
$rueckgabewert = ausgabe("Freitag");
echo $rueckgabewert;

Es ist wie ein normaler Funktionsaufruf mit einer Parameterübergabe, nur dass die Funktion nicht den Text ausgibt, sondern an die Variable übermittelt, mit der wir die Funktion aufrufen. Sollte mehr als ein Wert zurückgegeben werden, so greift man meistens auf Arrays zurück.


Anonyme Funktionen

In PHP gibt es auch anonyme Funktionen, das sind Funktionen, die keinen Namen besitzen und direkt aufgerufen werden. Als Beispiel werden wir eine anonyme Funktion an einer Variablen definieren.

Anonyme Funktionen

$ausgabe = function($parameter) {
 echo "Es wurde " . $parameter . " übergeben. <br />";
};
$ausgabe("Guten Tag");
$ausgabe("Gute Nacht");
Hinweis

Anonyme Funktionen können auch in anderen Funktionen eingesetzt werden. In diesem Fall spricht man von Callback-Funktionen.


Weiter mit Strings