Dönen değerler

Değerler, kullanımı seçime bağlı olan return deyimi kullanılarak döndürülür. Her türde değer döndürülebilir, buna diziler ve nesneler dahildir. return kullanıldığında işlevin çalışması o noktada hemen durdurulur ve denetim işlevin çağrıldığı satıra aktarılır. Daha ayrıntılı bilgi için return bölümüne bakınız.

Bilginize:

return belirtilmezse NULL değeri döner.

return kullanımı

Örnek 1 - return kullanımı

<?php
function square($num)
{
    return 
$num $num;
}
echo 
square(4);   // '16' çıktılar.
?>

Bir işlevden birden fazla değer döndüremezsiniz, ancak böyle bir sonucu bir dizi döndürülerek elde edebilirsiniz.

Örnek 2 - Bir diziyle birden fazla değerin döndürülmesi

<?php
function küçük_sayılar()
{
    return array (
012);
}
list (
$sıfır$bir$iki) = küçük_sayılar();
?>

Bir işlevden gönderimli bir değer döndürmek için, & işlecini hem işlev bildiriminde hem de dönen değeri bir değişkene atarken kullanmalısınız:

Örnek 3 - Bir işlevden gönderimli değer döndürmek

<?php
function &gönderimli_döndür()
{
    return 
$gönderim;
}

$yenigönderim =& gönderimli_döndür();
?>

Gönderimler hakkında daha fazla bilgi edinmek için Gönderimler Hakkında bölümüne bakınız.

Dönen tür bildirimleri

PHP 7'de dönen tür bildirimleri desteği eklenmiştir. Değiştirge türünde bildirimlere benzer şekilde, dönen tür bildirimlerinde değerin türünü bir işlevden dönen değerin türü belirler. Dönen tür belirtimlerinde kullanılabilen türler değiştirge türü bildirimlerdeki türlerle aynıdır.

Kesin tür belirtimi dönen tür belirtimlerini de etkiler. Öntanımlı zayıf kipte, dönen türler istenen türde değilse doğru türe zorlanır. Kesin tipte ise dönen değer doğru türde değilse TypeError istisnası oluşur.

PHP 7.1.0 ve sonrasında, dönüş değeri, tür adı soru işareti (?) öncelenerek, null olarak işaretlenebilir. Bu, işlevin belirtilen türü veya NULL değerini döndürdüğünü belirtir.

Bilginize:

Bir ebeveyn yöntem geçersizleştirilirken çocuğun yönteminin ebeveyn üstündeki dönen tür bildirimiyle eşleşmesi gerekir. Eğer ebeveyn bir dönen tür tanımlamıyorsa çocuğun yöntemi de öyle yapabilir.

Örnekler

Örnek 4 Temel dönen tür bildirimi

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

// float döneceğini unutmayın.
var_dump(sum(12));
?>

Yukarıdaki örneğin çıktısı:

float(3)

Örnek 5 Kesin kip işe karışırsa

<?php
declare(strict_types=1);

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

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

Yukarıdaki örneğin çıktısı:

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

Örnek 6 Bir nesne döndürmek

<?php
class {}

function 
getC(): {
    return new 
C;
}

var_dump(getC());
?>

Yukarıdaki örneğin çıktısı:

object(C)#1 (0) {
}

Örnek 7 - Null olabilen dönüş türü bildirimi (7.1.0 ve sonrası)

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