Podręcznik PHP
Poprzedni | Rozdział 21. Referencje | Następny

# Co robią referencje

W PHP referencje pozwalają na stworzenie dwu zmiennych zawierających tą samą zawartość. Więc poniższy skrypt:

`<?php $a =& $b ?>`

znaczy tyle, że $a oraz $b wskazują na tą samą zmienną.

> Notatka: $a oraz $b są całkowicie równe, czyli nie $a wskazuje na $b lub odwrotnie, lecz $a oraz $b wskazują na to samo miejsce.

Ta sama składnia może być używana z funkcjami zwracającymi referencje, i z operatorem new (w PHP 4.0.4 i późniejszych):

`<?php $bar =& new foo_klasa(); $foo =& znajdx_zmienna($bar); ?>`

> Notatka: Brak operatora & powoduje powstanie kopii obiektu. Jeżeli użyjesz $this wewnątrz klasy, zmienna ta będzie pracować na bierzącym egzemplarzu danej klasy. Dowiązanie bez użycia & spowoduje powstanie kopii egzemplarza danej klasy (czyli naszego obiektu) i $this będzie pracować na kopii, co nie jest zwykle tym czego byśmy chcieli. Zwykle pożądane jest posiadanie tylko jednego egzemplarza z którym chcemy pracować, z powodów wydajności i zajętości pamięci.

> Pomimo tego, że możliwe jest użycie operatora @ do wyciszenia ewentualnych błędów w konstruktorze podczas użycia go w konstrukcji @new, to zapis ten nie działa kiedy używana jest konstrukcja &new. Jest to ograniczenie silnika Zend (Zend Engine) i użycie takiego zapisu spowoduje błąd parsowania.

Drugą rzeczą na którą pozwalają referencje jest przekazywanie zmiennych przez-referencje. Możliwe jest to przez uczynienie zmiennej lokalnej w funkcji i zmiennej w zakresie wywoływania tej funkcji odwołujacych się do tej samej wartości. Na przykład:

`<?php function foo (&$zmienna) { $zmienna++; } $a=5; foo ($a); ?>`

spowoduje, że $a będzie równe 6. Dzieje się tak, ponieważ w funkcji foo zmienna $zmienna odwołuje się do tej samaj zawartości jak zmienna $a. Zobacz również bardiej dokładne wyjaśniena na temat przekazywania przez referencję.

Trzecią rzeczą którą umożliwiają referencje jest zwracanie przez referencje.

Poprzedni | Spis treści | Następny
Referencje | Początek rozdziału | Czym nie są referencje