Mit lehet referenciákkal tenni

A PHP referenciák lehetőséget adnak arra, hogy egy értékhez két nevet lehessen rendelni. Ez azt jelenti, hogy a következő programban:

$a =& $b;

az $a és $b nevek ugyanarra az értékre hivatkoznak.

Megjegyzés: Az $a és a $b nevek teljesen egyenrangúak. Nem arról van szó, hogy az $a a $b-re mutat, vagy fordítva, hanem arról, hogy az $a és a $b név ugyanannak az értéknek két elnevezése.

Ugyanez a forma használható az olyan függvényeknél, amelyek referenciát adnak vissza, vagy a new operátor használatakor (a PHP 4.0.4 és későbbi verziókban):

$obj =& new valamilyen_osztaly();
$ize =& valtozo_kereses ($valami);

Megjegyzés: Ha nem használod az & -t, akkor az osztálypéldány másoláta adódik át. A $this objektumon belüli használatával ugyanazon az objektumpéldányon dolgozol. Ha az értékadás során az & -t elhagyod, akkor az objektumról másolat készül és a $this már ezen a másolaton fog dolgozni. Van, amikor ez nem kívánatos, mivel általában egy példányon szeretnénk dolgozni a jobb memóriahasználat és teljesítmény érdekében.

Az @ operátort nem lehet együtt használni a &new utasítással, amivel el lehetne nyomni a konstruktorban fellépő hibákról történő jelzéseket. Ez a jelenlegi Zend motor egyik korlátja, és ezért fordítási hibát (parse error-t) fog jelezni, ha ilyet talál.

A a referenciákat paraméterátadáskor is lehet használni. Ebben az esetben a meghívott függvény egy lokális változója és a hívó környezet egy változója ugyanazt az értéket fogja képviselni. Például:

function ize (&$valtozo)
{
    $valtozo++;
}

$a = 5;
ize ($a);

Ez a kód az $a változó értékét 6-ra állítja. Ez azért történik meg, mivel az ize függvényben a $valtozo egy referencia a $a változó értékére. A részletes leírást a referenciakénti paraméterátadás c. fejezetben olvashatod.

A referenciák harmadik felhasználási módja a refencia visszatérési-érték.