PHP już wykonuje operacje kopiowania przy zapisie, w których nie tworzy nowej wartości, dopóki czegoś nie zmienisz, więc nie ma dużo pamięci zaoszczędzonej przez użycie referencji. Może to nawet zepsuć niektóre rzeczy, które PHP robi wewnętrznie, aby zmniejszyć zużycie pamięci, a nawet pogorszyć sytuację.
Dodaj do tego fakt, że referencje sprawiają, że ogólnie rzecz biorąc jest to zbyt magiczne. Domyślną wartością, a więc tym, czego oczekuje większość ludzi, jest przekazywanie wartości; kiedy przechodzę $i
do funkcji, ogromnie komplikuje to, że trzeba dbać o to, czy ta funkcja w tajemniczy sposób zmienia się $i
na coś zupełnie innego, a tym samym na wszelki wypadek tworzy kopie obronne. (Może już modyfikować, $i
jeśli wartość jest obiektem, ale moim zdaniem nie powinna.)
Zasadniczo uważam, że przekazywanie przez odniesienie jest przydatne tylko w przypadku parametrów „wyjściowych”, czyli zmiennych, których oczekuję wrócić z funkcji niż piłkę, a la preg_match
„ów &$matches
. Nawet w przypadku funkcji, które wyraźnie modyfikują przekazywany obiekt, na przykład sort
lub array_pop
, co wydaje się nieco nieprzyjemne ... ale z tym utknęliśmy.