PHP From Hell

Junho 27, 2008

Embarcando nessa onda de posts semanais que uma galera de blogueiros fazem, resolvi criar a seção “PHP From Hell”. Vou tentar – eu disse tentar :D – postar alguma coisa dessa seção toda sexta-feira. A idéia é postar dicas de funcionalidades do PHP que pouca gente ( incluindo yo hehehe ) conhece.

Vou começar falando da função extract. Esta função importa elementos de um array associativo para a tabela de símbolos. Trocando em miúdos, os índices do array passam a ser variáveis cujo os valores são os seus correspondentes no array. Basicamente é alguma coisa parecida com o register_globals com câmbio manual :D .

Na prática a coisa funciona assim:

<?php

$marca = “Ferrari”;
$origem = “Los Cabos”;

$carros_collection = array(“marca”=>”Audi”,”ano”=>”2008″,”modelo”=>”A4″);
$busu_collection = array(“origem”=>”Lapa”,”destino”=>”Liberdade”);

extract($carros_collection, EXTR_PREFIX_SAME, “tidoc”);
extract($busu_collection, EXTR_SKIP);

echo “<BR/>$marca, $ano, $modelo, $tidoc_marca”;
echo “<BR/>$origem, $destino, $tidoc_origem”;?>

O resultado vai ser:

Ferrari, 2008, A4, Audi
Los Cabos, Liberdade

Mais de onde veio $tidoc_marca e onde foi parar o valor Lapa? Simples Padawan … Como você está inserindo elementos na tabela de símbolos, corre o risco de você cagar alguma coisa. Pra que isso não aconteça, você usa o parâmetro extract_type. É esse parâmetro que indica a forma que as colisões serão tratadas. Em nosso exemplo usamos EXTR_PREFIX_ALL e EXTR_SKIP, no primeiro, se já houver uma variável com o mesmo nome do elemento incorporado, o nome da nova variável irá receber o prefixo indicado no terceiro parâmetro. Com EXTR_SKIP, se ocorrer colisões, o novo valor é descartado.

Outras opções são:
EXTR_OVERWRITE, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID, EXTR_IF_EXISTS, EXTR_PREFIX_IF_EXISTS, EXTR_REFS.

Recomendo dar uma lida na documentação: http://www.php.net/manual/pt_BR/function.extract.php

Entry Filed under: PHP. Tags: , , , .

Leave a Comment

Required

Required, hidden

Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackback this post  |  Subscribe to the comments via RSS Feed


 

Junho 2008
S T Q Q S S D
« Mai   Ago »
 1
2345678
9101112131415
16171819202122
23242526272829
30  

Arquivos

Tópicos recentes

Tags

Addfont apache Aplicações audio bash Carreira desabilitado desativado Desktop diminuir Documento emprego Encoding Firefox FPDF Gerenciador Google GTK+ HDA iconv iReport Jasper jasperserver Java Linux MakeFont mudo mysql Partição PDF Perl PHP postgres procedure redimensionar Relatorio script shell shrink SLACKWARE som ttf2pt1 vaga Vista Windows

Categorias

Blogroll