Normalmente, a passagem de parâmetros em PHP é feita
por valor, ou seja, se o conteúdo da variável for alterado, essa
alteração não afeta a variável original.
Exemplo:
function
mais5($numero) {
$numero
+= 5;
}
$a
= 3;
mais5($a);
//$a continua valendo 3
No exemplo acima, como a passagem de parâmetros é por
valor, a função mais5 é inútil, já que após a execução sair
da função o valor anterior da variável é recuperado. Se a
passagem de valor fosse feita por referência, a variável $a teria 8
como valor. O que ocorre normalmente é que ao ser chamada uma
função, o interpretador salva todo o escopo atual, ou seja, os
conteúdos das variáveis. Se uma dessas variáveis for passada como
parâmetro, seu conteúdo fica preservado, pois a função irá
trabalhar na verdade com uma cópia da variável.7 Porém, se a
passagem de parâmetros for feita por referência, toda alteração
que a função realizar no valor passado como parâmetro afetará a
variável que o contém.
Há duas maneiras de fazer com que uma função tenha
parâmetros passados por referência: indicando isso na declaração
da função, o que faz com que a passagem de parâmetros sempre seja
assim; e também na própria chamada da função. Nos dois casos
utiliza-se o modificador “&”. Vejamos um exemplo que ilustra
os dois casos:
function
mais5(&$num1, $num2) {
$num1
+= 5;
$num2
+= 5;
}
$a
= $b = 1;
mais5($a,
$b); /* Neste caso, só $num1 terá seu valor alterado, pois a
passagem por referência está definida na declaração da função.
*/
mais5($a,
&$b); /* Aqui as duas variáveis terão seus valores alterados.
*/
Nenhum comentário:
Postar um comentário