Desenvolvimento - PHP

Variáveis Superglobais em qualquer versão do PHP4

Veja como simular as variáveis superglobais do PHP em versões anteriores à 4.1.0.

por Alfred Reinold Baudisch



As variáveis superglobais ($_POST, $_GET, $_SESSION, etc..) foram introduzidas no PHP 4.1.0. Então, a partir daí, todos passaram a escrever código as usando. Mas, como ainda existem muitos usuários que ainda usam versões do PHP anteriores à 4.1.0, alguns códigos passaram a não funcionar na máquina desses usuários, justamente pelas superglobais.

Reescrever todo o código que contém superglobais para funcionar com versões anteriores a 4.1.0, iria ser muito trabalhoso e até em partes, burrice (pois o código não iria ser adaptado às novas tendências do PHP), pois em todo local que você usasse superglobais, você iria ter que substitui-las, por suas antigas "primas", no caso:

$HTTP_POST_VARS no lugar da superglobal $_POST, $HTTP_GET_VARS no lugar da superglobal $_GET e assim vai.

Quando você usa as superglobais dentro de funções, não há a necessidade de importa-las com a diretiva global, pois, enfim, elas são superglobais! Mas, anteriormente, era necessário, ex: global $HTTP_GET_VARS. E caso você modifique seu código de superglobal => globais, terá de importar em todas as funções.

Para facilitar esse processo, criei a classe "superglobais". Caso a versão do PHP em uso numa máquina seja anterior à 4.1.0, a classe irá criar as variáveis $_POST, $_COOKIE, $_SERVER, $_FILES e $_REQUEST! Poupando de você muito trabalho de reescrita.

Mas e você está se perguntando: "Tá, mas como torna-las superglobais?". Bom, infelizmente o PHP não possui nenhuma função para tornar alguma variável superglobal (espero que isso seja desenvolvido algum dia, quem sabe no PHP5), então, você terá que ter o trabalho de importa-las em suas funções, através da função "importar" da classe.

A função irá retornar "TRUE" caso a versão em uso do PHP seja anterior a 4.1.0, então você importará as variáveis desejadas.

Ex: em uma função você usa a $_POST e $_COOKIE, então, sua função se parecerá com isso:

Listagem 1: Função utilizando POST e COOKIE

<?php
function minha_funcao()
{
if(superglobais::importar())
{
global $_POST, $_COOKIE;
}
echo $_POST["nome"] . " - Username: " . $_COOKIE["username"];

}
?>

Já vi vários códigos OPEN-SOURCE do PHP que usam apenas as superglobais sem nenhuma simulação das mesmas para usuários que forem a rodar o código em versão anterior a 4.1.0, o sistema então não funciona. Então, essa classe pode ser muito útil.

Clique aqui para fazer o download da classe.

Alfred Reinold Baudisch alfred@auriumsoft.com.br www.auriumsoft.com.br

Alfred Reinold Baudisch

Alfred Reinold Baudisch - Desenvolvedor web freelance, com atuação na área há 7 anos. Experiência avançada em PHP, SQL e modelagem de sistemas multi-camadas. Atualmente dedicado ao aprendizado em desenvolvimento mobile, especificamente mobile games, com J2ME. Apaixonado e conhecedor do mercado financeiro, gestão e estratégias de novos negócios, visão constantemente empreendedora. Editor dos blogs Jornada Imperial e O Desenvolvedor PHP.