Variável de variável

  • Identifique-se para criar novos tópicos neste fórum
  • Visitantes anônimos não podem postar neste fórum
Celso Goya  Iniciante De: São Paulo - SP - Brasil  Postagens: 0

Prá quem der uma fuçada nos códigos do XOOPS vai encontrar um pedacinho com uma syntaxe esquisita, mas é um recurso excelente do PHP.

Ai vai o exemplo:


If (isset($HTTP_POST_VARS)) {
foreach ($HTTP_POST_VARS as $k => $v) {
${$k} = $v;
}
}


A sacada aqui é que ele usa um recurso de criar uma variável com um nome variável.
A linha:
${$k} = $v;
Cria uma variável à partir da chave do vetor $HTTP_POST_VARS e atribui o valor do mesmo vetor.


Prá que serve isso?
Simples, isso nos permite fazer referência direta às variáveis vindas de um formulário usando só um cifrão.

Exemplo de uso:

/*
Recebi uma variável id de um form.
*/
If (isset($HTTP_POST_VARS)) {
foreach ($HTTP_POST_VARS as $k => $v) {
${$k} = $v;
}
}

If($id == 0){}


Muito legal isso, soluçãozinha rápida e limpa

[]'s.
Celso Goya

Gilberto Galdino de Oliveira  Membro De: Guarulhos - São Paulo - Brasil  Postagens: 171

Isto seria como uma macro (&) que pode ser designada e mutante ou não?

Celso Goya  Iniciante De: São Paulo - SP - Brasil  Postagens: 0

Isso mesmo

É bem legal, está prá fazer umas coisas bacanas com este recurso.

Claudia Antonini Vitiello Callegari  Participativo De: Guarulhos - São Paulo - Brasil  Postagens: 74

Uma das formas de uso desse recurso, seria em formulários tipo tabela com n linhas, no script que faz o tratamentos dos campos.
Aqui esta um exemplo:

Montagem do form.

for($i=$row[0];$i<$row[1];$i++) {
$this->qry->navega($i);
if(($i%2)==0) {
echo " ";
}
else {
echo " ";
}
echo " " . $this->qry->data["cod_produto"] ."\n";
echo " " . $this->qry->data["codi_13"]."\n";
echo " " . $this->qry->data["nome"] ."\n";
echo " \n";
echo " \n";
echo " \n";
echo "
\n";

echo " \n";

}

echo "\n";
echo "

Executar

";
echo " \n";
}

echo "

";
link_paginas($row[2],$pagina,"&opt=I2&descri=$descri&ean=$ean");
echo "

";

************* trecho do script de tratamento do form.
$incluiu=0;
$naoincluso=0;

For($i=0;$i$codigoplu='codigoplu_'.$lcto[$i];
$dt_venc='dt_venc_'.$lcto[$i];
$loja=$usr_h->loja;
$dt_digi=time();
$qtd='qtd_'.$lcto[$i];
$estc03embc='estc03embc_'.$lcto[$i];

$venci->codigoplu=$$codigoplu;
$venci->dt_venc=$$dt_venc;
$venci->loja=$loja;
$venci->dt_digi=$dt_digi;
$venci->qtd=$$qtd;
$venci->estc03embc=$$estc03embc;

If ($venci->incluir($erro)) {
$incluiu++;
}else {
echo "<script>alert('Ocorreu um erro!\\n" . $men_erro . "');</script>";
$naoincluso++;
}

Gilberto Galdino de Oliveira  Membro De: Guarulhos - São Paulo - Brasil  Postagens: 171

Bom Claudia, dá uma mostra do form e termos visual para o pessoal...

Claudia Antonini Vitiello Callegari  Participativo De: Guarulhos - São Paulo - Brasil  Postagens: 74

Na imagem abaixo, tem um exemplo do form gerado em uma tabela. É gerado dinamicamente, por isso para tratar as variáveis usa-se aquela técnica comentada $$.

Celso Goya  Iniciante De: São Paulo - SP - Brasil  Postagens: 0

Muito bom

Gostei do exemplo Claudia

Eu achei dez esse recurso, principalmente prá criar chaves em Arrays, isso é bacana, pode substituir aquelas tabelas que só tem o campo chave e nome.

[]'s.
Celso Goya

Gilberto Galdino de Oliveira  Membro De: Guarulhos - São Paulo - Brasil  Postagens: 171

Oki escreveu:
Muito bom

Gostei do exemplo Claudia

Eu achei dez esse recurso, principalmente prá criar chaves em Arrays, isso é bacana, pode substituir aquelas tabelas que só tem o campo chave e nome.

[]'s.
Celso Goya

Poderia dar mais exemplos?
O assunto agora está ficando cada vez melhor tecnicamente.
Obrigado a Claudia também.
Como podem ver o exemplo citado por ela está dentro de um puro sistema em XOOPS, aproveitando suas classes e tudo mais.

Celso Goya  Iniciante De: São Paulo - SP - Brasil  Postagens: 0

Mais exemplos:

Exemplo 1:
Usando o mesmo recurso para transfrmar as variáveis de sessão em variáveis locais.


If (isset($HTTP_SESSION_VARS)) {
foreach ($HTTP_SESSION_VARS as $k => $v) { ${$k} = $v;
}
}


Exemplo 2:
Criando uma variável com nome dinâmico:

$methodType = getenv("REQUST_METHOD");

$$methodType = "is Enabled"

Isset($GET) ? echo("GET: ".$GET) : echo("POST: is disabled");
Isset($POST) ? echo("POST: ".$POST) : echo("POST: is disabled");


Exemplo 3:
Usando chaves , elas servem simplesmene para determinar a ordem de processamento.

$key = "chave1";
$array = array("chave1"=>"bororoska");

${$array[$key]} = "teste";

Echo("Isto é um".$bororoska);


Ahhh, eu não testei os exemplos, qualquer coisa me fala, HEHE, tomará que funcionem

[]'s.
Celso Goya

  Pesquisa avançada






Entrada

Codinome:


Senha:





Perdeu a senha?  |Cadastre-se!


Quem nos visita
Há 25 visitantes neste momento... (13 na seção Fóruns)

Associados: 0
Anônimos: 25

outros...

Banner XOOPS Cube