Tiago Madeira

Futilidades

Only variables can be passed by reference

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?

Comentários

Bruno P. Gonçalves

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

Isael Ferreira

O duro foi saber que é um erro fatal, aeauehauehu.

Obrigado! Seu comentário foi enviado e será publicado quando for aprovado.

Infelizmente ocorreu um erro ao enviar seu comentário.