4.17 Co to jest referencja? Do czego jej użyć?

Ostatnia modyfikacja: 2003-03-26 19:33:16

Referencja to odwołanie do obszaru pamięci zmiennej.
Dzięki referencjom skrypt zużywa mniej pamięci, przez co staje się szybszy i bardziej wydajny.
Zazwyczaj przydają się do dwóch rzeczy:
a) modyfikacji argumentów funkcji bez zwracania ich za pomocą instrukcji return, przydatne jeśli nasza funkcja dokonuje operacji na kilku zmiennych, a nie możemy / nie chcemy zwrócić ich jako tablicy:

<?php
$arg 
1;
function 
foo(&$arg) {
    
$arg++;
}

foo($arg); 
echo 
$arg//zwróci 2
?>

UWAGA:
W niektórych skryptach (nawet tych w manualu) można się spotkać z konstrukcją foo(&$arg). Jest ona przestarzała, działa tylko jeśli w php.ini allow_call_time_pass_reference = On i nie będzie supportowana w przyszłych wersjach interpretera .
b) tworzenia aliasów:

<?php
$var1 
'ala ma kota';
$var2 =& $var1;
$var2 'ala nie ma kota!';
echo 
$var1//zwróci nam 'ala nie ma kota!'
?>

Cokolwiek zrobimy z $var2 w rzeczywistości będzie działaniem na $var1. Bez znaczka "&" interpreter skopiowałby zawartość $var1 i przypisał ją do $var2. W ten sposób mielibyśmy w pamięci dwie zmienne o tej samej zawartości, a przecież nie zawsze jest nam to potrzebne. Na tym przykładzie nie widać wagi problemu, ale wyobraźmy sobie że pod $var1 znajduje się sporej wielkości plik wczytany przez readfile()...
gdzie więcej przeczytać o referencjach?
http://www.php.net/manual/en/language.references.php


Powrót do indeksu