Curso de Aplicaçoes WEB em PHP: 11. Variáveis e Constantes

Author: Ricardo Soares - Postado em: 07/09/2009
Relacionado as categorias: Planeta PHP, Guias e Tutoriais, Tecnologia, Diversos |  





Declaração de uma variável

Como a tipagem em PHP é dinâmica, as variáveis não precisam ser declaradas. Uma variável é inicializada no momento em que é feita a primeira atribuição. O tipo da variável será definido de acordo com o valor atribuído.

O modificador static

Uma variável estática é visível num escopo local, mas ela é inicializada apenas uma vez e  seu valor não é perdido quando a execução do script deixa esse escopo. Veja o seguinte exemplo:

function Teste() {
  $a = 0;
  echo $a;
  $a++;
}

O último comando da função é inútil, pois assim que for encerrada a execução da função a variável $a perde seu valor. Já no exemplo seguinte, a cada chamada da função a variável $a terá seu valor impresso e será incrementada:

function Teste() {
  static $a = 0;
  echo $a;
  $a++;
}

O modificador static é muito utilizado em funções recursivas, já que o valor de algumas variáveis precisa ser mantido. Ele funciona da seguinte forma: O valor das variáveis declaradas como estáticas é mantido ao terminar a execução da função. Na próxima execução da função, ao encontrar novamente a declaração com static, o valor da variável é recuperado.

Em outras palavras, uma variável declarada como static tem o mesmo “tempo de vida” que uma variável global, porém sua visibilidade é restrita ao escopo local em que foi declarada e só é recuperada após a declaração.

Exemplo:

function Teste() {
  echo "$a";
  static $a = 0;
  $a++;
}

O exemplo acima não produzirá saída alguma. Na primeira execução da função, a impressão ocorre antes da atribuição de um valor à função, e portanto o conteúdo de $a é nulo (string vazia). Nas execuções seguintes da função Teste()
a impressão ocorre antes da recuperação do valor de $a, e portanto nesse momento seu valor ainda é nulo. Para que a função retorne algum valor o modificador static deve ser utilizado.

Variáveis Variáveis

O PHP tem um recurso conhecido como variáveis variáveis, que consiste em variáveis cujos nomes também são variáveis. Sua utilização é feita através do duplo cifrão ($$).

$a = “teste”;
$$a = “Mauricio Vivas”;

O exemplo acima e equivalente ao seguinte:

$a = “teste”;
$teste = “Mauricio Vivas”;

Variáveis enviadas pelo navegador

Para interagir com a navegação feita pelo usuário, é necessário que o PHP possa enviar e receber informações para o software de navegação. A maneira de enviar informações, como já foi visto anteriormente, geralmente é através de um comando de impressão, como o echo. Para receber informações vindas do navegador através de um link ou um formulário html o PHP utiliza as informações  enviadas através da URL.

Por exemplo: se seu script php está localizado em “http://localhost/teste.php3” e você o chama com a url http://localhost/teste.php3?vivas=teste”, automaticamente o PHP criará uma variável com o nome $vivas contendo a string “teste”. Note que o conteúdo da variável está no formato urlencode. Os formulários html já enviam informações automaticamente nesse formato, e o PHP decodifica sem necessitar de tratamento pelo programador.

URLencode

O formato urlencode é obtido substituindo os espaços pelo caracter “+” e todos os outros caracteres não alfa-numéricos (com exceção de “_”) pelo caracter “%” seguido do código ASCII em hexadecimal.

Por exemplo: o texto “Testando 1 2 3 !!” em urlencode fica “Testando+1+2+3+%21%21”

O PHP possui duas funções para tratar com texto em urlencode. Seguem suas sintaxes:
string urlencode(string texto);
string urldecode(string texto);
Essas funções servem respectivamente para codificar ou decodificar um texto passado como argumento. Para entender melhor o que é um argumento e como funciona uma função, leia o tópico “funções”.

Utilizando arrays

Cada elemento de um formulário HTML submetido a um script PHP cria no ambiente do mesmo uma variável cujo nome é o mesmo nome do elemento. Por exemplo: um campo definido como:
<input type=”text” name=”endereco”>

ao ser submetido a um script PHP fará com que seja criada uma variável com o nome $endereco. Isto acontece de forma semelhante para cookies, como veremos mais adiante.

Uma boa técnica de programação é utilizar a notação de arrays para nomes de cookies ou itens de um formulário html. Para um conjunto de checkboxes, por exemplo, podemos utilizar a seguinte notação:
<input type=”checkbox” name=”teste[]” value=”valor1″>opcao1
<input type=”checkbox” name=”teste[]” value=”valor2″>opcao2
<input type=”checkbox” name=”teste[]” value=”valor3″>opcao3
<input type=”checkbox” name=”teste[]” value=”valor4″>opcao4
<input type=”checkbox” name=”teste[]” value=”valor5″>opcao5

Ao submeter o formulário, o script que recebe os valores submetidos terá uma variável chamada $teste contendo os valores marcados num array, com índices a partir de zero. Assim, se forem marcadas as opçoes 2, 3 e 5, poderemos fazer as seguintes afirmações:

$teste == array(“valor2”, “valor3”, valor5”);
$teste[0] == “valor2;
$teste[1] == “valor3;
$teste[2] == “valor5;

O mesmo artifício pode ser utilizado com outros elementos de formulários e até com cookies.

Variáveis de ambiente

O PHP possui diversas variáveis de ambiente, como a $PHP_SELF, por exemplo, que contém o nome e o path do próprio arquivo. Algumas outras contém informações sobre o navegador do usuário, o servidor http, a versão do PHP e diversas informações. Para ter uma listagem de todas as variáveis e constantes de ambiente e seus respectivos conteúdos, deve-se utilizar a função

Verificando o tipo de uma variável

Por causa da tipagem dinâmica utilizada pelo PHP, nem sempre é possível saber qual o tipo de uma variável em determinado instantese não contar com a ajuda de algumas funções que ajudam a verificar isso. A verificação pode ser feita de duas maneiras:

Função que retorna o tipo da variável

Esta função é a gettype. Sua assinatura é a seguinte:
string gettype(mixed var);

A palavra “mixed” indica que a variável var pode ser de diversos tipos.

A função gettype pode retornar as seguintes strings: “integer”, “double”, “string”, “array”, “object” e “unknown type”.

Funções que testam o tipo da variável

São as funções is_int, is_integer, is_real, is_long, is_float, is_string, is_array e is_object. Todas têm o mesmo formato, seguindo modelo da assinatura a seguir:
int is_integer(mixed var);

Todas essas funções retornam true se a variável for daquele tipo, e false em caso contrário.

Destruindo uma variável

É possível desalocar uma variável se ela não for usada posteriormente através da função unset, que tem a seguinte assinatura:
int unset(mixed var);

A função destrói a variável, ou seja, libera a memória ocupada por ela, fazendo com que ela deixe de existir. Se mais na frente for feita uma chamada á variável, será criada uma nova variável de mesmo nome e de conteúdo vazio, a não ser que a chamada seja pela função isset. Se a operação for bem sucedida, retorna true.

Verificando se uma variável possui um valor

Existem dois tipos de teste que podem ser feitos para verificar se uma variável está setada: com a função isset e com a função empty.

A função isset

Possui o seguinte protótipo:
int isset(mixed var);
E retorna true se a variável estiver setada (ainda que com uma string vazia ou o valor zero), e false em caso contrário.

A função empty

Possui a seguinte assinatura:
int empty(mixed var);
E retorna true se a variável não contiver um valor (não estiver setada) ou possuir valor 0 (zero) ou uma string vazia. Caso contrário, retorna false.

Constantes pré-definidas

O PHP possui algumas constantes pré-definidas, indicando a versão do PHP, o Sistema Operacional do servidor, o arquivo em execução, e diversas outras informações. Para ter acesso a todas as constantes pré-definidas, pode-se utilizar a função phpinfo(), que exibe uma tabela contendo todas as constantes pré-definidas, assim como configurações da máquina, sistema operacional, servidor http e versão do PHP instalada.

Definindo constantes

Para definir constantes utiliza-se a função define. Uma vez definido, o valor de uma constante não poderá mais ser alterado. Uma constante só pode conter valores escalares, ou seja, não pode conter nem um array nem um objeto. A assinatura da função define é a seguinte:

int define(string nome_da_constante, mixed valor);
A função retorna true se for bem-sucedida. Veja um exemplo de sua utilização a seguir:

define (”pi”, 3.1415926536);
$circunf = 2*pi*$raio;













Comments

Leave a Reply






Últimos posts