Tworzenie referencji wewnątrz konstruktora może prowadzić do dziwnych
efektów. Ten rozdział ma pomóc w unikaniu takich problemów.
Sprawdźmy, czy jest jakaś różnica pomiędzy
$bar1, który jest tworzony przy pomocy operatora
przypisania =, a $bar2, który został
stworzony używając operatora referencji =&...
Wydaje się, że nie ma żadnej różnicy, ale na prawdę jest jedna, i to
bardzo istotna: $bar1 i
$globalref[0] NIE są referencjami,
NIE są tą samą zmienna. Dzieje się tak, ponieważ
"new" nie zwraca domyślnie referencji, ale kopię.
Notatka:
Zwracanie kopii zamiast referencji nie powoduje utraty wydajności (od
PHP 4 używane jest zliczanie referencji). Jednakże zazwyczaj lepiej jest
pracować poprostu z kopiami zamiast referencji, poniewać tworzenie
referencji zabiera trochę czasu, podczas gdy tworzenie kopii obiektów
teoretycznie w ogóle nie zabiera czasu (chyba że któraś z tych zmiennych
jest dużą tablicą lub obiektem i jedno z nich ulega zmianie, po czym tej
samej zmianie ulegają pozostałe zmienne; wtedy lepiej jest użyć
referencji do zmieniania ich równolegle).
Aby udowodnić to, co zostało zapisane powyżej, przyjrzyjmy się poniższemu
programowi.
Ustatni przykład. Postaraj się go zrozumieć/