O poder das variáveis superglobais do PHP – Parte I

elephpant2Um dos aspectos mais interessantes no PHP sem dúvida são suas variáveis superglobais. Elas são acessíveis em qualquer script PHP e em qualquer lugar do escopo de variáveis. Elas na verdade são vetores (arrays) predefinidos que provém diversos tipos de informações. Vamos estudá-las e aprender a utilizá-las corretamente, de forma a melhorar e agilizar nosso modo de programar.

Este artigo será dividido em 2 partes, como mostrado a seguir:

Parte I:

  1. Tabela das variáveis superglobais do PHP
  2. Analisando a entrada de dados do usuário com variáveis superglobais
  3. Usando $GLOBALS para acessar variáveis do escopo global

Parte II:

  1. Acessando informações do ambiente e do servidor
  2. Manipulando variáveis de sessão com $_SESSION
  3. Versões ultrapassadas das variáveis superglobais

Por agora, vamos começar com a Parte I deste artigo.

1. Tabela das variáveis superglobais do PHP

Variável Descrição
$GLOBALS Permite acessar qualquer variável que esteja no escopo global do nosso script PHP. As chaves de $GLOBALS devem ter o mesmo nome da variável que se deseja acessar.
$_SERVER Exibe uma ampla gama de informações sobre o servidor, tais como cabeçalhos, caminhos e localização dos scripts.
$_GET Fornece o acesso às variáveis HTTP enviadas pelo usuário através da URL. A chave de $_GET deve ser o nome da variável contida na URL que se deseja acessar.
$_POST Fornece o acesso às variáveis HTTP enviadas pelo usuário fazendo uso de um formulário com método POST. A chave de $_POST deve ser o nome da variável contida no formulário enviado que se deseja acessar.
$_COOKIE
$_REQUEST Por padrão, contém acesso aos valores contidos em $_GET, $_POST e $_COOKIE
$_SESSION Este array superglobal tem a habilidade de permitir que você acesse as variáveis de sessão do servidor, criadas na sessão ou login do usuário com seu script PHP.
$_ENV Este é um vetor associativo que contém em cada uma de suas chaves informações de ambiente

2. Analisando a entrada de dados do usuário com variáveis superglobais

As variáveis $_GET, $_POST e $_REQUEST servem para tratar os dados enviados pelo usuário via URL ou por um fomrulário. $_GET trata as variáveis enviadas pela url (método GET) e $_POST as enviadas por um formulário (método POST). $_REQUEST possui uma função muito especial: ela contém os valores de $_GET, $_POST e $_COOKIE, respeitando esta ordem de precedência.

$_REQUEST não é tratada como uma referência, mas sim como uma cópia de $_GET, $_POST e $_COOKIE, portanto, alterar o valor de $_GET['nome'] durante a execução do programa não irá alterar o valor de $_REQUEST['nome']. Veja um exemplo abaixo:

URI da requisição ao servidor: http://www.andresa.net/exemplo.php?nome=Andresa&time=Palmeiras

$_GET['nome']="Richarlyson";

//vai imprimir "Meu nome é Andresa e meu time é o Palmeiras
echo'Meu nome é' . $_REQUEST['nome']. ' e meu time é o ' . $_REQUEST['time'];

//vai imprimir "O Richarlyson não é gay, seus chatos =("
echo 'O ',$_GET['nome'],' NÃO É GAY, seus chatos =(';

NOTA: O operador de concatenação de string do PHP é o ‘ . ‘ (ponto), mas você também pode utilizar a ‘ , ‘ (vírgula). Note que no primeiro comando echo() eu usei o ponto e no segundo a vírgula. Ambos devem funcionar normalmente.

Como você já viu, com $_GET nós pegamos os dados vindos da URL. Quando variáveis são enviadas pelo formulário usando o método POST, as variáveis só são acessíveis utilizando $_POST ou $_REQUEST. Da mesma maneira, se eu modificar o valor de $_POST, nada será alterado em $_REQUEST.

O $_POST é usado para trabalhar com variáveis enviadas via POST por um formulário em HTML. Caso você ainda não saiba usar formulários HTML junto com o PHP, então faça o download de Exemplo de formulário HTML usando método POST com PHP (97)


3. Usando $GLOBALS para acessar variáveis do escopo global

Assim como todas (todas?) as linguagens, o PHP também diferencia as variáveis através do escopo. Veja no exemplo abaixo:

$fruta="Maçã";

function mostrarFruta()
{
     $fruta="uva";
     return $fruta;

}
//Imprime "Maçã";
echo $fruta;
//Imprime "uva"
echo mostrarFruta();

Note que dentro da função mostrarFruta(), a variável $fruta tem um valor, e fora da função, no escopo global, ela possui outra. Mas e se eu precisar acessar uma variável que esteja fora da função? Para executar essa tarefa há 2 maneiras, e uma delas e com uma variável super global. Veja abaixo:

$fruta="maçã";

function mostrarFruta1()
{
	global $fruta;
	echo $fruta;
}

function mostrarFruta2()
{
	$fruta="uva";
	echo $GLOBALS['fruta'];
	echo $fruta;
}
//Imprime "maçã"
mostrarFruta1();

//Imprime "maçã" e depois "uva"
mostrarFruta2();

Os dois exemplos funcionam para o meu propósito. Na primeira, é utilizada a variável $fruta do escopo global até o fim da função, enquanto na segunda, o valor global só é utilizado no momento em que eu uso o $GLOBALS.

Vamos ficando por aqui, mas a segunda parte do artigo já está praticamente pronta! Aguardem e não se esqueçam: comentem!

  1. rodrigo disse:

    Muito bom!

    Parabéns

    Mas o Richarlyson eh gay sim..

Spam protection by WP Captcha-Free

line
footer
Powered by Wordpress | Adaptado por Andresa Martins