Neste post vamos ver um pouco da passagem de parâmetro por referência no PHP. Esse modo de passagem de parâmetro, ao contrario do padrão que é a passagem de parâmetro por valor, tudo que é alterado na variável dentro da função, a variável do escopo que chamou a função também sofre alterações.
Tecnologia aplicada
Estrutura de arquivo
- index.php => arquivo principal do post que possui os exemplos de passagem de parâmetro por referência.
Desenvolvimento
Arquivo: inidex.php
Na passagem de parâmetro por valor, que a forma mais comum de passagem de parâmetro ao chamar uma função, a variável tem seu escopo restrito à função a qual ela pertence. É feito uma cópia do valor de uma variável para a outra. Na passagem de parâmetro por referência, é criado um apontador para o endereço de memória da variável da função que está chamando. Para utilizar essa forma de passagem de parâmetro no PHP, basta incluir o "&" na variável da função que receberá o valor por referência.
Exemplo de passagem de parâmetro por valor:
function soma($y){
$s = $y + 10;
$y = $s;
return $s;
}
$a = 10;
$c = soma($a);
echo $c; // => A saida aqui será 20.
echo $a; // => A saída aqui será 10.
Ao chamar a função soma, passamos as variáveis $a para a variável $y. Nessa forma de passagem de parâmetro, o sistema faz uma cópia do valor da variável $a para a variável $y. Toda e qualquer alteração feita em $y não interfere no valor alocado em $a. Dessa forma as variáveis não ligação uma com a outra.
Exemplo de passagem de parâmetro por referência:
//passagem de parâmetro por referencia
function soma(&$y){
$s = $y + 10;
$y = $s;
return $s;
}
$a = 10;
$c = soma($a);
echo $c; // => A saida aqui será 20.
echo $a; // => A saída aqui será 20.
Dessa forma, ao chamar a função soma, a variável $y somente aponta para o endereço de memória $a. Fazendo uma analogia, seria como a variável $y e $a compartilhasse o mesmo endereço de memória e por isso toda e qualquer alteração em $y também é feito em $a.
Esse foi nosso post de hoje.
Obrigado!
Até a próxima!
Nenhum comentário:
Postar um comentário