Only variables can be passed by reference

ATENÇÃO: Este conteúdo foi publicado há 12 anos. Eu talvez nem concorde mais com ele. Se é um post sobre tecnologia, talvez não faça mais sentido. Mantenho neste blog o que escrevo desde os 14 anos por motivos históricos. Leia levando isso em conta.

Instalei o PHP 5.0.5 no servidor do Colégio Salesiano na semana passada. E descobri que criaram um novo erro agora (do tipo fatal) para quando eu passo uma função como argumento de outra. “Fatal Error: Only variables can be passed by reference”. Bom… Uma função nada mais é que uma variável, afinal é pra isso que serve o seu retorno. Mas agora o PHP nos força, por exemplo, a fazer:

<?php
$variavel2=str_replace("a", "b", $variavel);
$variavel3=funcao($variavel2);
?>

… ao invés de fazer como eu sempre fiz para economizar linhas:

<?php
$variavel3=funcao(str_replace("a", "b", $variavel));
?>

Realmente não entendi o porquê da mudança. Pra mim tava muito bom do jeito anterior… E não sou só eu que faço isso. Os caras que fizeram o phpBB também passaram várias vezes funções como argumentos de outras e isso fez com que eu perdesse algum tempo hoje trocando todos as funções dessa maneira que mostrei acima no fórum do Colégio…

Alguém entende esses caras?

2 comentários sobre “Only variables can be passed by reference

  1. Boa noite,

    Estou comentando só pra registrar que o erro não ocorre por conta da função, e que uma função não é uma variável.
    O erro ocorre por que você precisa passar a referencia da variável, e passando a função diretamente, a variável ainda não existe, e não tem uma referencia, ela só esta registrada nos registradores temporários (local “protegido” pelo interpretador PHP)

    Também estou com este problema, tentando passar uma variável variável ($$variavel). Assim que achar a solução volto a comentar =)

    Bruno P. Gonçalves

Deixe uma resposta