Aprenda a passar argumentos por referência no PHP

Veja como passar argumentos por referência no PHP e modificar variáveis diretamente dentro de funções.

Como passar argumentos por referência no PHP

No PHP, os argumentos de funções são passados por valor por padrão. Isso significa que qualquer modificação dentro da função não afeta a variável original. No entanto, podemos passar argumentos por referência, permitindo que a função altere diretamente o valor da variável original.

Sintaxe para passar argumentos por referência

Para passar um argumento por referência, usamos o símbolo & antes do nome do parâmetro:

<?php
function dobrarValor(&$numero) {
    $numero *= 2;
}

$valor = 5;
dobrarValor($valor);
echo $valor; // Saída: 10
?>

Neste exemplo, a função dobrarValor() recebe $numero por referência e modifica diretamente $valor, dobrando seu valor.

Diferença entre passagem por valor e por referência

<?php
function alterarTexto($texto) {
    $texto .= " modificado";
}

$mensagem = "Texto original";
alterarTexto($mensagem);
echo $mensagem; // Saída: Texto original (sem alteração)
?>

Aqui, $mensagem não é alterada porque foi passada por valor.

Agora, se passarmos por referência:

<?php
function alterarTexto(&$texto) {
    $texto .= " modificado";
}

$mensagem = "Texto original";
alterarTexto($mensagem);
echo $mensagem; // Saída: Texto original modificado
?>

Agora a variável $mensagem é alterada dentro da função, pois foi passada por referência.

Passar argumentos por referência no PHP pode ser muito útil para modificar diretamente variáveis dentro de funções, evitando retornos desnecessários. No entanto, seu uso deve ser feito com cautela, pois pode tornar o código mais difícil de depurar. O ideal é utilizá-lo em situações onde realmente é necessário modificar a variável original, como em funções de manipulação de arrays e otimizações de desempenho.

Algumas aplicações:

  • Funções que precisam modificar valores originais sem retorná-los
  • Otimização de memória ao trabalhar com grandes arrays
  • Manipulação de strings e estruturas de dados complexas
  • Implementação de algoritmos que exigem alterações diretas nas variáveis

Dicas para quem está começando

  • Use & antes do nome do parâmetro para passá-lo por referência.
  • Evite o uso excessivo de referências, pois pode dificultar a depuração.
  • Se precisar apenas do valor modificado, prefira retornar o valor em vez de modificar a variável original.
  • Quando usar referências em arrays, tenha cuidado para não modificar valores inesperadamente.
  • Em funções recursivas, avalie se a referência é realmente necessária para evitar loops infinitos.

Contribuições de Rafael Nogueira

Compartilhe este tutorial: Como passar argumentos por referência no PHP?

Compartilhe este tutorial

Continue aprendendo:

Como usar funções com múltiplos argumentos no PHP?

Veja como utilizar múltiplos argumentos em funções PHP para passar diversos valores e tornar o código mais dinâmico.

Tutorial anterior

Como criar funções variádicas no PHP?

Veja como criar funções variádicas no PHP para aceitar um número indefinido de argumentos de forma prática.

Próximo tutorial