Criação de variável variáveis em PHP

Categoria: PHP
Publicado em 08 de Junho de 2011

O PHP possui uma funcionalidade muito interessante chamada variável variáveis (variable variables), onde é possível armazenar o nome de uma variável dentro de outra. Para isso, dígitos de dólar duplo podem ser usados.

Por exemplo:

1
2
3
$var = 'nome';
$nome = 'Romário';
echo $$var;

O código acima imprime o valor da variável $nome usando a notação variável variáveis (com $$var).

Um fato bastante interessante é que com o uso de variável variáveis também é possível criar variáveis com qualquer nome (fora dos padrões de nomenclatura do PHP). No exemplo abaixo, a variável com nome 789 será criada:

1
2
3
$var = '789';
$$var = 'Romário';
echo ${'789'}; // ou echo $$var;

O trecho acima imprime o texto 'Romário'.

A técnica de variável variáveis também pode ser usada para a execução de funções:

1
2
3
4
5
6
function somar($a, $b) {
   return $a + $b;
}
 
$var = 'somar';
echo $var(10, 20);

O código acima imprime o valor 30. Veja que o nome da função é armazenada na variável $var, para em seguida ser invocada pela mesma.


NOTA: O uso de variável variáveis torna a leitura do código difícil e pode, se mal implementada, levar a problemas de segurança.

Apenas como demonstração hipotética, no seguinte código um usuário mal intencionado poderia exibir o valor de qualquer variável do script PHP alterando o valor do parâmetro "campo" da requisição HTTP:

1
2
$v = $_GET['campo'];
echo $$v;

Um código parecido com o acima poderia expor dados sigilosos do sistema.



 

Copyright © Fernando Hidemi Uchiyama 2010 - Todos os direitos reservados