Gönderimleri kullanıldığı üç temel işlem vardır: gönderimli atama, gönderimli aktarma, ve gönderimli döndürme. Bu bölümde bu işlemlerle ilgili bağlantılar verilerek bir başlangıç yapılmıştır.
Bu ilk temel işlemde, iki değişkenin aynı içeriğe atıf yapmasına izin verilir. Örnek:
<?php
$a =& $b;
?>
Bilginize:
Burada $a ve $b tamamen eşittir; ne $a, $b'yi göstermekte ne de $b, $a'yı göstermektedir; $a ve $b aynı yeri göstermektedir.
Bilginize:
Eğer bir dizi gönderimle kopyalanmışsa gösterilen şey değerler değildir. Bu ayrıca işlevlere değerleriyle aktarılan diziler için de geçerlidir.
Bilginize:
Eğer tanımlanmamış bir değişken gönderimle atanır, aktarılır veya döndürülürse oluşturulmuş olur.
Örnek 1 - Gönderimlerin tanımlanmamış değişkenlerle kullanımı
<?php
function foo(&$var) { }
foo($a); // $a "oluşturulur" ve değer olarak null atanır
$b = array();
foo($b['b']);
var_dump(array_key_exists('b', $b)); // bool(true)
$c = new StdClass;
foo($c->d);
var_dump(property_exists($c, 'd')); // bool(true)
?>
Aynı sözdizimi, gönderim döndüren işlevler ve new işleci (PHP 4.0.4 ve sonrası, PHP 5.0.0'a kadar) ile kullanılabilir:
<?php
$foo =& dğşkn_bul($bar);
?>
E_STRICT
seviyesinde ileti üretmektedir.
Bir işlevin içinde global olarak bildirilmiş bir değişkeni gönderimli olarak atarsanız gönderim sadece işlevin içinde görünür olur. $GLOBALS dizisini kullanarak bundan kaçınabilirsiniz.
Örnek 2 - İşlev içinde küresel değişkenlere gönderim
<?php
$var1 = "Örnek değişken";
$var2 = "";
function küresel_gönderimler($küreselleri_kullan)
{
global $var1, $var2;
if (!$küreselleri_kullan) {
$var2 =& $var1; // sadece işlev içinde görünürdür
} else {
$GLOBALS["var2"] =& $var1; // küresel alanda da görünürdür
}
}
küresel_gönderimler(false);
echo "var2'ye '$var2' atanır\n"; // var2'ye '' atanır
küresel_gönderimler(true);
echo "var2'ye '$var2' atanır\n"; // var2'ye 'Örnek değişken' atanır
?>
Bilginize:
Eğer bir değişkene foreach döngüsü içinde gönderimle bir değer atarsanız gönderimde de değişiklik yapılmış olur.
Örnek 3 - foreach döngüsü içinde gönderim
<?php
$ref = 0;
$row =& $ref;
foreach (array(1, 2, 3) as $row) {
// işlemler
}
echo $ref; // 3 - yinelenen dizinin son elemanı
?>
Gönderimlerle yapılan ikinci şey değişkenleri gönderimle aktarmaktır. Bir işlev içinde bir yerel değişken oluşturup çağrı etki alanında bir değişkenle aynı içeriğe gönderim yaparak bu gerçeklenebilir. Örnek:
<?php
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
echo $a; // 6 çıktılar
?>
Gönderimlerle yapılan üçüncü şey gönderimli değer döndürmedir.