2009
03.11

Variável Variável

Gerar variáveis dinâmicas no PHP é um poderoso recurso que a linguagem provê aos desenvolvedores, ao que chamamos esse recurso(conceito) de “variável variável”, ou seja,  utilizar o conteúdo de uma variável para realizar uma nova atribuição como nome de uma nova variável.

Exemplo Prático

Imaginemos um formulário com os seguintes campos:

  1. Nome
  2. E-mail
  3. DDD
  4. Telefone

Agora como você faria para realizar as atribuições dos valores recebidos através do $_POST para as variáveis, criaria uma variável de cada vez para fazer a atribuição dos valores?  Dessa forma:

  1. $nome = $_POST[nome];
  2. $email = $_POST[email];
  3. $ddd = $_POST[ddd];
  4. $telefone = $_POST[telefone];

Moleza né, mas e se o formulário possuir 50 campos, vai dar um trabalho lazarento pra atribuir esses valores as  respectivas variáveis, por isso criaremos variáveis dinâmicas para evitar todo esse trabalhão.

Para tal tarefa é necessário que entendendamos o conceito de como funcionam as tais “variáveis variáveis”, assumindo que toda variável em PHP é obrigatoriamente precedida de um cifrão($), e uma variável dinâmica é precedida de dois ou mais de dois cifrões ($$), e com isso partimos para a implementação de váriaveis dinâmicas a partir de um $_POST do nosso formulário.

1
//campos do formulario
2
$campos_formulario = array("nome", "email", "ddd", "telefone");
3
 
4
//gera as variaveis dinamicamente
5
foreach($campos_formulario as $campo){
6
    $$campo = $_POST[$campo];
7
}

 

Repare que na linha 2 criei um array com todos os respectivos “names” dos campos do formulário, para que assim possamos realiazar as atribuções dinâmicamente através de um loop que percorre todo esse array, mas a mágica acontece na linha 6, onde aplicamos esse recurso.

Neste trecho, na primeira passada do loop, a variável $$_campo é criada com o nome do conteúdo do nosso array. Qual foi mesmo o nosso primeiro indíce no array…!? Isso mesmo, o primeiro indíce de nosso array foi “nome”, o que significa que $$_campo está acessando o conteúdo de nosso array e criando a “variável nome” e atribuindo o valor respectivo através do $_POST[$campo], que nada mais é do que o name do campo no formulário.

Obs: Para que funcione perfeitamente é necessário que os valores dos indíces do array sejam respectivamentes iguais ao names dos formulários e que estejam na mesma ordem.

Também não deixe de ler:

Não há comentários ainda.

Deixe seu comentário