Retorno de dados, usando return, ou enviando parametros por referência.

Esse artigo é de dar um nó no cerébro, eu e um amigo gastamos alguns neurônios discutindo qual é mais vantajoso, passar uma variável por referencia para obter o resultado de uma função ou usar o return.

Várias linguagens utilizam o conceito de função, basicamente sua sintaxe geral é:

Function nome_da_função(argumentos){

}

As variáveis que nós utilizamos dentro da função normalmente “morrem” dentro dela.  Exceto quando a função usa a Passagem por Referência:

Passagem de Parâmetros por Referência

Na passagem por referência o que é passado para a função é o endereço do parâmetro e portanto a função que recebe pode através do endereço modificar o valor do argumento na função que chamou.

Fonte:  http://equipe.nce.ufrj.br/adriano/c/apostila/funcao.htm

Então e mais ou menos isso:

$a=1;
$b=2;
soma($a,$b);
echo $b;
function soma($a,&$b){
$b=$b+$a;
}

Nesse código o valor de a e b são somados e o valor e colocado em $b. Tudo muito bem, tudo muito bom, mas a meu ver e um estilo porco, pois o código fica ilegível, e você vai ter de ler a função para saber que o dado que ela retorna  é gravado na segunda variável.

Eu sou a favor da Passagem por Valor, e o retorno através da função return.

Definição da passagem por Valor:

Passagem de Parâmetros por Valor

Na passagem por valor uma cópia do valor do argumento é passado para a função. Neste caso a função que recebe este valor ao fazer modificações no parâmetro não estará alterando o valor original que somente existe na função que chamou.

Fonte: http://equipe.nce.ufrj.br/adriano/c/apostila/funcao.htm

$a=1;
$b=2;
$c = soma($a,$b);
echo $c;
function soma($a,$b){
$c=$b+$a;
return $c;
}

A legibilidade do código é muito superior. Fica evidente que a função joga o valor na variável $c. Mesmo sem ler a função soma.

Um porém levantado por meu amigo seria quanto ao uso de memória, que no nosso exemplo, gera 5 posições de memória na passagem por valor e apenas 2 na passagem por referência.

Mas, contudo, a passagem por valor ainda oferece outra vantagem você pode chamar a funçao da seguinte maneira, <?php c$=soma(2,3)?>, ocupando tambem apenas 3 espaços na memória.

E aí qual a opinião de vocês passagem por valor ou por referência?

Leia mais em:

http://www.vivaolinux.com.br/artigo/Referencias-ou-ponteiros-em-PHP?pagina=3

Ps.: Diego foi por sua causa mesmo que eu escrevi esse artigo!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Please type the characters of this captcha image in the input box

Por favor, digite os caracteres desta imagem na caixa de entrada