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. PHP'nin son sürümlerinde & imini işlev(&$a); biçeminde kullandığınız takdirde "Çağrı sırasında gönderimle aktarım" anlamına gelen bir uyarı alırsınız.
Aşağıdakiler bir işleve gönderimle aktarılabilir:
new
deyimi.
Bir işlevden döndürerek bir gönderim. Örnek:
<?php
function foo(&$var)
{
$var++;
}
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
?>
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()); // PHP 5.0.5'ten beri ölümcül hata üretmekte
foo($a = 5); // Bir ifade, değişken değil
foo(5); // Ölümcül hata üretir
?>