Rückgabewerte

Sie können Werte mit der optionalen return-Anweisung zurückgeben. Es können Variablen jeden Typs zurückgegeben werden, auch Arrays oder Objekte. Dies beendet sofort die Funktion und die Kontrolle wird wieder an die aufrufende Zeile zurückgegeben. Weitere Informationen finden Sie unter return.

Hinweis:

Wird return ausgelassen, dann wird der Wert NULL zurückgegeben.

Einsatz von return

Beispiel #1 Einsatz von return

<?php
function quadrat($zahl)
{
    return 
$zahl $zahl;
}
echo 
quadrat(4);   // gibt '16' aus.

?>

Es ist nicht möglich, mehrere Werte von einer Funktion zurückzugeben. Ein ähnliches Resultat kann man aber durch die Rückgabe eines Arrays erreichen.

Beispiel #2 Rückgabe mehrerer Werte als Array

<?php
function kleine_zahlen()
{
   return array (
012);
}
list (
$null$eins$zwei) = kleine_zahlen();
?>

Um von einer Funktion eine Referenz zurückzugeben, müssen Sie den Referenz-Operator & sowohl in der Funktionsdeklaration, als auch bei der Zuweisung des zurückgegebenen Wertes verwenden:

Beispiel #3 Rückgabe von Referenzen aus Funktionen

<?php
function &returniere_referenz()
{
    return 
$einereferenz;
}

$neuereferenz =& returniere_referenz();
?>

Weitere Informationen über Referenzen finden Sie im Kapitel Referenzen in PHP.

Rückgabe-Typdeklarationen

PHP 7 führt die Unterstützung von Rückgabe-Typdeklarationen ein. Ähnlich wie Parameter-Typdeklarationen geben Rückgabe-Typdeklarationen den Typ des Wertes, der von einer Funktion zurückgegeben wird, an. Die gleichen Typen, die für Parameter-Typdeklarationen verfügbar sind, sind auch für Rückgabe-Typdeklarationen erlaubt.

Strenge Typsierung hat ebenfalls Auswirkungen auf Rückgabe-Typdeklarationen. Im normalen schwachen Typisierungsmodus werden zurückgegebene Werte in den korrekten Typ konvertiert, wenn sie nicht bereits diesen Typ haben. Im strengen Modus muss der zurückgegebene Wert den korrekten Typ haben; andernfalls wird ein TypeError ausgelöst.

Von PHP 7.1.0 können Rückgabetypen als nullbar ausgezeichnet werden, indem dem Typnamen ein Fragezeichen (?) vorangestellt wird. Dies zeigt an, dass die Funktion entweder den angegeben Typ oder NULL zurückliefert.

Hinweis:

Wird eine Elternmethode überschrieben, muss die Rückgabe-Typdeklaration der Kindmethode mit der Elternmethode übereinstimmen. Definiert die Elternmethode keinen Rückgabetyp, dann darf die Kindmethode das tun.

Beispiele

Beispiel #4 Grundlegende Rückgabe-Typdeklaration

<?php
function sum($a$b): float {
    return 
$a $b;
}

// Beachten Sie, dass eine Gleitkommazahl zurückgegeben wird.
var_dump(sum(12));
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

float(3)

Beispiel #5 Einsatz des strengen Typisierungsmodus

<?php
declare(strict_types=1);

function 
sum($a$b): int {
    return 
$a $b;
}

var_dump(sum(12));
var_dump(sum(12.5));
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

int(3)

Fatal error: Uncaught TypeError: Return value of sum() must be of the type integer, float returned in - on line 5 in -:5
Stack trace:
#0 -(9): sum(1, 2.5)
#1 {main}
  thrown in - on line 5

Beispiel #6 Rückgabe eines Objekts

<?php
class {}

function 
getC(): {
    return new 
C;
}

var_dump(getC());
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

object(C)#1 (0) {
}

Beispiel #7 Nullbare Rückgabe-Typdeklaration (von PHP 7.1.0 an)

<?php
function get_item(): ?string {
    if (isset(
$_GET['item'])) {
        return 
$_GET['item'];
    } else {
        return 
null;
    }
}
?>