Gönderimle Aktarım

Bir değişkeni bir işleve gönderimle aktarabilirsiniz, böylece işlevin değiştirgelerini değiştirebilirsiniz. Sözdizimi şöyledir:

<?php
function işlev(&$değişken)
{
    
$değişken++;
}

$a=5;
foo($a);
// Burada $a artık 6'dır
?>

Bilginize: İşlevin çağrıldığı yerde gönderim yapıldığına dair bir belirtinin olmadığına dikkat ediniz; gönderim sadece işlevin üzerindedir. İşlev tanımı değiştirgeyi gönderimle gerektiği gibi aktarmak için tek başına yeterlidir.

Aşağıdakiler bir işleve gönderimle aktarılabilir:

  • işlev($a) şeklinde bir değişken.
  • Bir işlevden döndürerek bir gönderim. Örnek:

    <?php
    function foo(&$var)
    {
        
    $var++;
    }
    function &
    bar()
    {
        
    $a 5;
        return 
    $a;
    }
    foo(bar());
    ?>
    Ayrıca, gönderimle değer döndürme konusuna da bakınız.

Sonuç tanımsız olacağından, başka hiçbir ifade gönderimle aktarılamaz. Örneğin, aşağıdaki gönderimle aktarım örneği geçersizdir:

<?php
function foo(&$var)
{
    
$var++;
}
function 
bar() // Dikkat, & yok
{
    
$a 5;
    return 
$a;
}
foo(bar()); // Bir uyarı üretir

foo($a 5); // Bir ifade, değişken değil
foo(5);      // Ölümcül hata üretir

class Foobar
{
}

foo(new Foobar()) // PHP 7.0.7'dan beri bir uyarı üretmekte
                  // Uyarı: Sadece değişkenler gönderime göre aktarılmalıdır.
?>