W3docs

PHP-Funktionen: Verstehen und Verwenden im Code

Funktionen sind ein zentrales Konzept in PHP. Sie machen Code modular, wiederverwendbar und strukturiert – ein Muss für jeden PHP-Entwickler.

Eine Funktion ist ein benannter Codeblock, der eine bestimmte Aufgabe ausführt. Funktionen sind eines der wichtigsten Bausteine in PHP: Sie ermöglichen es, eine Logik einmal zu schreiben und überall wiederzuverwenden, anstatt denselben Code an vielen Stellen zu kopieren. Diese Seite erklärt, wie man Funktionen definiert und aufruft, wie man Argumente übergibt (einschließlich Standard-, typdeklarierter, per Referenz und variadischer Argumente), wie Rückgabewerte funktionieren und welche Scope-Regeln bestimmen, welche Variablen eine Funktion sehen kann.

Was ist eine PHP-Funktion?

Eine PHP-Funktion ist ein wiederverwendbarer Codeblock, der nur dann ausgeführt wird, wenn man ihn aufruft. Eine Funktion wird mit dem Schlüsselwort function deklariert, gefolgt von einem Namen, einem Klammerpaar mit den Parametern (den Eingaben, die die Funktion entgegennimmt) und einem in { } eingeschlossenen Rumpf. Eine Funktion kann optional mit dem Schlüsselwort return einen Wert zurückgeben.

Die allgemeine Form einer Funktion sieht so aus:

function functionName($parameter1, $parameter2) {
    // code to run when the function is called
    return $result; // optional
}

Einige Namensregeln: Ein Funktionsname muss mit einem Buchstaben oder Unterstrich beginnen, darf Buchstaben, Ziffern und Unterstriche enthalten und ist nicht case-sensitiv (sayHello() und SayHello() rufen dieselbe Funktion auf). Konventionell verwenden die meisten modernen PHP-Codebasen camelCase oder snake_case für benutzerdefinierte Funktionen.

Warum PHP-Funktionen verwenden?

Der Einsatz von Funktionen bietet mehrere konkrete Vorteile:

  • Wiederverwendbarkeit. Die Logik einmal schreiben und so oft aufrufen wie nötig. Eine Verhaltensänderung erfordert nur eine Anpassung an einer Stelle, statt jede Kopie zu suchen.
  • Lesbarkeit. Eine gut benannte Funktion (calculateTax()) zeigt einem Leser was passiert, ohne dass er lesen muss wie.
  • Modularität. Eine komplexe Aufgabe in kleinere Funktionen aufzuteilen macht jeden Teil leichter verständlich, testbar und debuggbar.
  • Weniger Fehler. Weniger duplizierter Code bedeutet weniger Stellen, an denen sich derselbe Fehler verstecken kann.

Wie man eine Funktion definiert und aufruft

Eine Funktion zu definieren tut für sich genommen nichts — der Rumpf wird erst ausgeführt, wenn man sie aufruft, indem man ihren Namen gefolgt von Klammern schreibt. Das folgende Beispiel definiert eine Funktion ohne Parameter und ruft sie zweimal auf.

<?php

function greet() {
    echo "Hello from a function!\n";
}

greet(); // call it
greet(); // call it again

?>

Ausgabe:

Hello from a function!
Hello from a function!

Einfache Funktion mit Rückgabewert

Eine Funktion ohne Parameter, die einen string zurückgibt:

php— editable, runs on the server

Ausgabe: Hello, World!

Funktionsparameter und Argumente

Ein Parameter ist die in der Funktionsdefinition benannte Variable; ein Argument ist der tatsächliche Wert, den man beim Aufruf übergibt. PHP bietet mehrere Möglichkeiten, damit umzugehen.

Argumente übergeben

Die folgende Funktion nimmt zwei Parameter entgegen und gibt ihre Summe zurück. Wir übergeben 5 und 10 als Argumente.

php— editable, runs on the server

Ausgabe: 15

Standardwerte für Parameter

Ein Parameter kann einen Standardwert haben, der verwendet wird, wenn der Aufrufer das Argument weglässt. Parameter mit Standardwerten müssen nach den erforderlichen stehen.

<?php

function greet($name, $greeting = "Hello") {
    return "$greeting, $name!";
}

echo greet("Anna") . "\n";          // uses the default greeting
echo greet("Anna", "Welcome");      // overrides the default

?>

Ausgabe:

Hello, Anna!
Welcome, Anna!

Typdeklarationen

Man kann den erwarteten Typ jedes Parameters und des Rückgabewerts deklarieren. Das macht eine Funktion selbstdokumentierend und ermöglicht es PHP, einen Fehler auszulösen, wenn der falsche Typ übergeben wird.

<?php

function multiply(int $a, int $b): int {
    return $a * $b;
}

echo multiply(4, 3);

?>

Ausgabe: 12

Argumente per Referenz übergeben

Standardmäßig übergibt PHP Argumente per Wert — die Funktion arbeitet auf einer Kopie, und die ursprüngliche Variable bleibt unverändert. Stellt man einem Parameter & voran, wird er per Referenz übergeben, sodass die Funktion die Variable des Aufrufers direkt ändern kann.

<?php

function addOne(&$number) {
    $number++;
}

$count = 10;
addOne($count);
echo $count;

?>

Ausgabe: 11

Argumentlisten variabler Länge

Wenn man nicht weiß, wie viele Argumente übergeben werden, sammelt der ...-Operator (Splat) sie alle in einem array.

<?php

function sumAll(...$numbers) {
    return array_sum($numbers);
}

echo sumAll(1, 2, 3, 4, 5);

?>

Ausgabe: 15

Rückgabewerte

Eine Funktion gibt mit dem Schlüsselwort return einen Wert zurück. return beendet die Funktion auch sofort — jeglicher Code danach wird übersprungen. Eine Funktion ohne return (oder return; ohne Wert) gibt null zurück. Um mehrere Werte auf einmal zurückzugeben, kann man ein array zurückgeben (oder list() zum Entpacken auf der Empfängerseite verwenden).

<?php

function minMax($a, $b) {
    if ($a < $b) {
        return [$a, $b]; // returns and exits here
    }
    return [$b, $a];
}

[$min, $max] = minMax(8, 3);
echo "Min: $min, Max: $max";

?>

Ausgabe: Min: 3, Max: 8

Einen ausführlicheren Blick bietet das Kapitel zur PHP-return-Anweisung.

Variablen-Scope

Variablen, die innerhalb einer Funktion erstellt werden, sind lokal für diese Funktion — sie existieren außerhalb nicht, und die Funktion kann keine Variablen aus dem umgebenden (globalen) Scope sehen, sofern man sie nicht mit dem Schlüsselwort global importiert oder als Argumente übergibt.

<?php

$message = "outside";

function showScope() {
    // $message from the global scope is NOT visible here
    $message = "inside";
    echo $message;
}

showScope();        // prints the local value
echo "\n";
echo $message;      // prints the global value, untouched

?>

Ausgabe:

inside
outside

Der Scope ist eine häufige Fehlerquelle für Einsteiger — das Kapitel zum PHP-Variablen-Scope erklärt global, static und lokale Variablen im Detail. Siehe auch das Kapitel PHP-Variablen für die Grundlagen.

Häufige Fehler vermeiden

  • Eine Funktion aufrufen, bevor man ihren Rückgabewert verwendetreturn gibt nur einen Wert zurück; man muss ihn noch mit echo ausgeben oder speichern. add(5, 10); allein erzeugt keine sichtbare Ausgabe.
  • Einen Standardparameter vor einem erforderlichen platzieren — PHP erfordert, dass Standardwerte zuletzt stehen.
  • Erwarten, dass Änderungen nach außen dringen — ohne & ändert das Modifizieren eines Parameters innerhalb einer Funktion nicht die Variable des Aufrufers.
  • Einen Funktionsnamen erneut deklarieren — zwei Funktionen mit demselben Namen können nicht definiert werden; PHP wirft einen fatalen Fehler.

Fazit

PHP-Funktionen sind das Fundament von strukturiertem, wiederverwendbarem Code. Sobald man sicher darin ist, Funktionen zu definieren, Argumente zu übergeben (mit Standardwerten, Typen, Referenzen und Variadics), Werte zurückzugeben und den Scope zu verstehen, kann man jedes große Problem in saubere, testbare Teile zerlegen. Als Nächstes empfiehlt sich die Beschäftigung mit PHP-Arrays und PHP-Strings, mit denen Funktionen häufig arbeiten.

Übungen

Übung
Was sind die wichtigsten Merkmale von Funktionen in PHP?
Was sind die wichtigsten Merkmale von Funktionen in PHP?
Was this page helpful?