HOME PAGE JAVASCRIPT
Botões Cálculos Datas Essenciais Janelas Flutuantes Menus
HTML CSS FLASH PHP ASP GERADORES CORES MISCELANEA Contato  






Introdução a linguagem PHP - Variáveis

Variáveis

  • Os nomes de variável no PHP começam sempre pelo símbolo $ seguido de uma letra ou underline (sublinhado), seguido de quaisquer símbolos numéricos (0 - 9), alfanuméricos minúsculos (a - z), alfanuméricos maiúsculos (A - Z) ou sublinhados.
  • Os nomes de variável fazem distinção entre maiúsculas e minúsculas.
  • Não podem conter espaços! Se tiverem mais do que uma palavra deverão ser interligadas por um underline (sublinhado).

Por exemplo: $total_variavel.

<?php
$minha_variavel=4;
$minha_string="super ";
echo "$minha_string "." $minha_variavel";
?>

O ponto . após a variável $minha_string concatena as variáveis.

Deverá escrever na tela do navegador: super 4.

É necessário ter em conta alguns cuidados quando criamos variáveis:

<?php
//distinção entre maiúsculas e minúsculas
$var = "Bom ";
$Var = "dia!";
echo $var . $Var;   // Exibe "Bom dia!"

$25arrobas = "Ainda por cumprir!";   // INVÁLIDO - Nenhum nome de variável pode começar por uma expressão numérica
$_25arrobas = "Quase na linha!";    // VÁLIDO - Nome começa por _
?>

É possível escrever-se qualquer um dos 8 tipo primitivos numa variável. As variáveis são usadas para se atribuir um valor e guardá-lo na memória do computador para execução posterior:

<?php
$var = "Ganhou um prêmio!";
$count = 3;
if ($count < 5){
  echo $var;
}
?>

O script acima exibirá "Ganhou um prêmio!" se o valor da variável $count for menor que 5.

Tipos

O PHP suporta todos os oito tipos primitivos.

Boolean

O boolean é um valor lógico que pode assumir ou true ou false.

Neste exemplo o valor booleano é nos dado a conhecer pela função gettype():

<?php
echo gettype((bool) "");     // bool(false)
echo gettype((bool) 1);      // bool(true)
echo gettype((bool) "foo");  // bool(true)
?>

Aqui apresentamos duas variáveis com valores lógicos:

<?php
$foo = TRUE;
$foo = FALSE;
?>

Como podemos ver no exemplo acima, uma expressão tem um valor booleano true se ela contiver alguma coisa, e false se o seu conteúdo for nulo.

Inteiros

Um inteiro é um número do conjunto Z = { ...,-3,-2,-1,0,1,2,3,... }. Pode-se especificar através de notação decimal (de base 10), hexadecimal (base 16) ou octal (base 8), opcionalmente precedido de sinal (- ou +).

Representação de inteiros:

<?php
$a = 1234; # número decimal
$a = -123; # número negativo
$a = 0123; # número octal - precedido de um 0 - equivalente a 83 em decimal
$a = 0X1A; # número hexadecimal - precedido de um 0 e um X - equivalente a 26 em decimal
?>

Se você especifica um inteiro além dos limites de um inteiro, o PHP o interpreta como um ponto flutuante, veja abaixo.

<?php
$num = 2147483647;
var_dump($num);     // Saída: int(2147483647)
?>

Ou:

<?php
$num = 2147483648;
var_dump($num);     // Saída: float(2147483648)
?>

É necessário ter em atenção que na saída de uma fração para um inteiro', os arredondamentos não seguem a regra matemática, sendo assim é necessário o uso da função round():

<?php
var_dump(25/7);         //float(3.5714285714286)
var_dump((int) 25/7);   //int(3)
var_dump(round(25/7));  //float(4)
?>

Evite transformar uma fração de valor desconhecido para inteiro.

Números de ponto flutuante

Os números de ponto flutuante (floats e doubles) são números com casas decimais, onde, aqui, a vírgula é substituída por um ponto:

<?php
$a = 1.234;
$b = 1.3e4;
$c = 25.4E-10;
?>

Aqui também é necessário ter em atenção os arredondamentos.

Strings

Uma string é uma série de caracteres sem limites de comprimento. Ela é delimitada, no PHP, por Aspas, apóstrofo ou pela nova sintaxe heredoc:

<?php
echo 'string delimitada por apóstrofos!';
echo "string delimitada por Aspas";
echo <<<EOF
String delimitada por um heredoc
EOF;
?>

A inclusão de variáveis funciona aqui de várias maneiras. Vamos ver:

<?php
$carro = "Mercedes";
echo "Ele comprou um bonito $carro";     // funciona
echo "Eles compraram vários {$carro}s";  // funciona
echo "Eu faço um ${carro}";              // funciona
?>

As saídas serão:

  • Ele comprou um bonito Mercedes
  • Eles compraram vários Mercedess
  • Eu faço um Mercedes

Podemos também modificar strings:

<?php
$str = "Olha que alí há mal";   // Apresenta "Olha que alí há mal"
$str{strlen($str)-1} = "r";     // Apresenta "Olha que alí há mar"
?>

Ou:

<?php
$str = "Pegue isto";        // Apresenta "Pegue isto"
$str{strlen($str)-10} = "S";  // Apresenta "Segue isto"
?>

Cabe à função strlen() essa tarefa.

A função strlen(): retorna o tamanho de uma String.

Arrays

Um array é um mapa ordenado, com chaves e valores.

Exemplo:

<?php
$arr = array(1 => "um", 2 => "dois", 3 => TRUE);
echo $arr[1];  // Imprime "um"
echo $arr[3];  // Imprime "TRUE"
?>

Aqui nos é apresentado 3 chaves (1, 2 e 3) e 3 valores ("um", "dois" e TRUE).

Então podemos pegar uma chave de um array para imprimirmos o valor correspondente. Podemos também definir um array como vários array:

<?php
$arr = array("versão" => array ("beta"    => "0.5x",
                                "alpha"   => "0.1x",
                                "release" => "0.8x",
                                "final"   => "1.x"
                                ),
             "nome" => "PHP software",
             "SO" => array("win" => "Windows",
                           "lin" => "Linux",
                           "mac" => "MacOS"
                           )
             );

// Vamos agora remover um elemento do array, visto que o nosso software já passou a fase alpha
unset($arr["versão"]["alpha"]);

// Também podemos apagar o array inteiro. Já não vamos disponibilizar o nosso software
unset($arr);
?>

Podemos especificar apenas valores num array, sendo que o interpretador irá tornar cada um dos valores com uma chave a partir do zero.

<?php
$arr = array(1,45,23,68);
echo $arr[1]; // imprime 45

// Vamos agora apagar um valor e reindexar o nosso array:
unset($arr[1]);
$arr = array_values($arr);
// Não podemos imprimir o nosso array através de echo. Temos que fazer isso com print_r():
print_r($arr);
?>

Manipulação de tipos

O PHP não requer (ou suporta) a definição de tipo explícita na declaração de variáveis: o tipo de uma variável é determinado pelo contexto em que a variável é utilizada. Isto significa que, se você atribuir um valor string para a variável $var , $var se torna uma string. Se você então atribuir um valor inteiro para $var , ela se torna um inteiro.

Um exemplo da conversão automática do PHP é o operador de adição '+'. Se qualquer um dos operadores for float, então todos os operadores são avaliados como floats, e o resultado será um float. De outra forma, se os operadores forem interpretados como integers então o resultado será um integer. Note que isso não muda os tipos dos operadores: apenas muda em como esses operadores são avaliados.

<?php
$foo 
"0";  // $foo é string (ASCII 48)
$foo += 2;   // $foo é agora um interio (2)
$foo $foo 1.3;  // $foo é agora um float (3.3)
$foo "10 pequenos porcos";   // $foo é inteiro (15)
$foo "10 minúsculos porcos"// $foo é inteiro (15)
?>

Nota: O comportamento de uma conversão automática para array é atualmente indefinida.
Também, pelo PHP suporta indexação em strings via índice usando a mesma sintaxe de array, o seguinte exemplo é válido para todas versões do PHP:
 

<?php
$a    
'car'// $a is a string
$a[0] = 'b';   // $a is still a string
echo $a;       // bar
?>

Conversão de Tipos - Type Casting

A conversão de tipos no PHP funciona como no C: o nome de um tipo desejado é escrito entre parênteses antes da variável em que se deseja a moldagem.

<?php
$foo 
10;             // $foo é um inteiro
$bar = (boolean) $foo// $bar é um booleano
?>

As moldagens permitidas são:

  • (int), (integer) - molde para inteiro
  • (bool), (boolean) - converte para booleano
  • (float), (double), (real) - converte para número de ponto flutuante
  • (string) - converte para string
  • (binary) - converte para string binária (PHP 6)
  • (array) - converte para array
  • (object) - converte para objeto

(binary) e o prefixo b  foram adicionado no PHP 5.2.1

Note que tabulações e espaços são permitidos dentro dos parênteses, então o seguinte são funcionalmente equivalentes:

<?php
$foo 
= (int) $bar;
$foo = ( int ) $bar;
?>

Convertendo uma string literal e variáveis para strings binárias:

<?php
$binary 
= (binary)$string;
$binary b"binary string";
?>

Nota: Em vez de converter uma variável para string, você também pode englobar a variável entre aspas duplas.
 

<?php
$foo 
10;            // $foo é um interio
$str "$foo";        // $str é uma string
$fst = (string) $foo// $fst tambem é uma string

// Isto imprimirah "eles são o mesmo"
if ($fst === $str) {
    echo 
"eles são o mesmo";
}
?>

Escopo

O escopo de uma variável é a parte do script em que a variável pode ser referenciada.

PHP tem diferentes escopos de variáveis:

  • Superglobais
  • global
  • local
  • estático

Superglobais — Superglobais são variáveis nativas que estão sempre disponíveis em todos escopos

Várias variáveis pré-definidas no PHP são "superglobais", que significa que elas estão disponível em todos escopos para todo o script. Não há necessidade de fazer global $variable; para acessá-lo dentro de funções ou métodos.

Estas variáveis superglobais são:

  • $GLOBALS — Referencia todas variáveis disponíveis no escopo global
  • $_SERVER — Informação do servidor e ambiente de execução
  • $_GET — Variáveis passadas para o script atual via método GET.
     
    A variável $_GET é utilizada para acessar parâmetros de consulta de URL associados a um pedido de HTTP. Os parâmetros de consulta de URL são mais utilizados para pedidos de HTTP GET, mas, de fato, são suportados para todos os tipos de pedido de HTTP. Para o seguinte pedido:
    /search?title=Rose&author=Eco
    • $_GET['title'] terá o valor "Rose"
    • $_GET['author'] terá o valor "Eco"
     
  • $_POST — Variáveis passadas para o script atual via método POST.
     
    Formulários enviados pelo método post, passam suas variáveis codificadas dentro da própria submissão, ou seja, as variáveis não são visíveis ao usuário, apenas o servidor e o browser conhecem tais informações.

  • $_FILES
    A variável $_FILES contém informações sobre quaisquer arquivos que foram transferidos por upload durante o pedido de HTTP atual. Dado o seguinte formulário HTML:
    <form action="http://localhost:8080/testupload.php">
    <input type="file" name="myfile"/>
    </form>
    

    A variável $_FILES pode ser acessada pelo seguinte script:

    <?php
    echo $_FILES['myfile']['name'] . "\n";      // nome do arquivo no cliente
    echo $_FILES['myfile']['type'] . "\n";      // tipo de conteúdo - text/plain
    echo $_FILES['myfile']['size'] . "\n";      // comprimento do arquivo
    echo $_FILES['myfile']['tmp_name'] . "\n";  // caminho para o arquivo temporário no servidor
    echo $_FILES['myfile']['error'] . "\n";     // código de erro
    ?>
    

    Observe que, atualmente, o tipo de conteúdo do arquivo não está sendo salvo durante o upload, portanto, o valor para $_FILES['myfile']['type'] sempre será text/plain.

     

  • $_COOKIE
    Com a variável $_COOKIE é possível recuperar informações armazenadas em cookie do navegador do usuário. Muito útil, comumente utilizadas nas diversas aplicações web, como por exemplo, webmail, comércio eletrônico, sites de relacionamentos, etc.
     
  • $_SESSION
    A variável $_SESSION pode armazenar varáveis durante uma sessão do usuário. Entende-se por sessão o tempo de navegação do usuário por diversas páginas do seu site, sendo possíve passar variáveis de uma página para outra, até que a sessão termine, o que pode acontecer por expirar o tempo, ou pelo execução do código de encerramento de sessão, ou pelo fechamento do navegador do usuário.
     
  • $_REQUEST
    A variável $_REQUEST reúne os valores das variáveis $_GET, $_POST e $_COOKIES. Ou seja, se você não tem certeza se a variável vai ser informada na URL ou em um formulário ou em um cookie, você pode utilizar $_REQUEST, que tem todas essas variávels ($_GET, $_POST e $_COOKIES).
     
  • $_ENV
    Com a variável $_ENV é possível recuperar variáveis de ambiente do sistema operacional. As variáveis de ambiente são particulares a cada sistema e a cada usuário.

Uma variável declarada dentro de uma função tem o escopo local seus dados so poderão ser acessados dentro daquela função.
<?php
 $a = 5; // escopo global
 function teste()
 {
 echo $a; // escopo local
 }
 test();
 ?>

O script acima não produz nenhuma saída pois a instrução echo $a refere-se a uma variável de escopo local $a que não tem nenhuma valor atribuído a ela.Você pode ter variáveis locais com o mesmo nome em funções diferentes, isso devido ao fato da variável local so ser reconhecida dentro da função em que ela foi declarada.As variáveis de escopo locais são finalizadas logo que a função é concluída.

Qualquer variável definida fora de alguma função tem o escopo global. As variáveis globais podem ser acessadas de qualquer parte do script, menos de dentro das funções. Para acessar uma variável de escopo global dentro de uma função, use a palavra-chave global.


<?php
 $a = 5;
 $b = 10;
 function teste()
 {
 global $a, $b;
 $b = $a + $b;
 }
 teste();
 echo $b;
 ?>

O script acima irá imprimir 15.

O PHP também armazena todas as variáveis globais em um array chamado $GLOBALS[index]. Onde o seu índice é o nome da variável, esse array também é acessível de dentro de uma função.

O exemplo acima pode ser reescrito assim:


<?php
 $a = 5;
 $b = 10;
 function teste()
 {
 $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
 }
 teste();
 echo $b;
 ?>

No final da execução de uma função todas as suas variáveis também são finalizadas ou seja ao chamar essa função novamente o valor das variáveis anteriores já não existe mais. No entanto se você quiser manter o valor de uma variável mesmo depois da função finalizada, a variável deve ser declarada como static.

Então, cada vez que a função é chamada, essa variável ainda terá as informações ali contidas.

Uma variável estática existe somente no escopo local da função, mas ela não perde seu valor quando o nível de execução do programa deixa o escopo. Considere o seguinte exemplo:

Exemplo demonstrando a necessidade de variáveis estáticas
<?php
function Teste ()
{
    
$a 0;
    echo 
$a;
    
$a++;
}
?>

Essa função é inútil partindo de que cada vez que ela é chamada, ela coloca em $a o valor 0 e imprime "0". A instrução $a ++ , que aumenta o valor da variável não tem sentido desde que a função sai e a variável $a desaparece. Para faze-la mais útil como contadora sem deixar de perder o sua conta atual, a variável $a é declarada como estática:

Exemplo de uso de variáveis estáticas
<?php
function Teste()
{
    static 
$a 0;
    echo 
$a;
    
$a++;
}
?>

Agora, cada vez que a função Teste() for chamada ele imprimirá o valor de $a e o incrementará.