quarta-feira, 24 de agosto de 2016

Chamada de função passando parâmetro por referência

Objetivo
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:

//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: