Co robiÄ… referencje
W PHP referencje pozwalają na stworzenie dwu zmiennych zawierających tą samą zawartość. Więc poniższy skrypt:
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):
Notatka: Brak operatora & powoduje powstanie kopii obiektu. Jeżeli użyjesz $this wewnątrz klasy, zmienna ta będzie pracować na bieżą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:
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.