Variáveis são um dos conceitos fundamentais em qualquer linguagem de programação. No PHP, elas são representadas pelo símbolo $ seguido de um nome, e possuem características únicas como tipagem dinâmica e escopos bem definidos. Nesta aula, exploraremos desde a declaração básica até recursos avançados como variáveis variáveis, fornecendo exemplos práticos para consolidar o aprendizado.

Declaração e $

Em PHP, toda variável deve começar com o símbolo $ seguido de um nome que comece com uma letra ou sublinhado (_), e pode conter letras, números e sublinhados. O cifrão é obrigatório e diferencia variáveis de outras construções da linguagem.

Exemplos de declaração:

$nome = "João";
$idade = 25;
$_salario = 5000.50;
$valor1 = 100;

O PHP é sensível a maiúsculas e minúsculas em nomes de variáveis, ou seja, $nome e $Nome são variáveis diferentes. Além disso, não é necessário declarar o tipo da variável; ela assume o tipo conforme o valor atribuído.

Tipagem dinâmica

PHP é uma linguagem de tipagem dinâmica, o que significa que o tipo de uma variável é determinado pelo valor que ela armazena e pode mudar durante a execução do script. Isso traz flexibilidade, mas exige cuidado para evitar erros inesperados.

Exemplo de mudança de tipo:

$valor = "10";        // string
echo gettype($valor); // string

$valor = $valor + 5;  // converte para inteiro
echo gettype($valor); // integer

O PHP converte automaticamente tipos em operações, como no exemplo acima, onde a string "10" foi convertida para inteiro ao somar com 5. Funções como gettype() e var_dump() ajudam a inspecionar o tipo e valor das variáveis.

Escopo

Escopo em PHP refere-se à região do código onde uma variável é acessível. Os principais escopos são: global, local (dentro de funções) e estático.

Variáveis declaradas fora de funções têm escopo global, mas não são automaticamente acessíveis dentro de funções. Para usar uma variável global dentro de uma função, é necessário usar a palavra-chave global ou o array $GLOBALS.

$x = 10; // global

function teste() {
    global $x;
    echo $x; // 10
}

Variáveis locais são criadas dentro de funções e não podem ser acessadas fora delas. Já variáveis estáticas (static) mantêm seu valor entre chamadas da função, mas são locais em escopo.

function contador() {
    static $cont = 0;
    $cont++;
    echo $cont;
}

contador(); // 1
contador(); // 2

Variáveis variáveis

Variáveis variáveis permitem usar o valor de uma variável como nome de outra variável. Isso é feito colocando um cifrão adicional antes de uma variável que contém o nome desejado.

Exemplo:

$nome = "João";
$$nome = "30"; // cria $João com valor "30"
echo $João; // 30

Isso pode ser útil em situações como criação dinâmica de variáveis, mas deve ser usado com cautela para não tornar o código confuso. Na prática, é preferível usar arrays associativos para mapear nomes a valores.

Boas práticas

Use nomes descritivos e siga um padrão (camelCase ou snake_case). Evite variáveis variáveis em código complexo. Sempre inicialize variáveis antes do uso para evitar erros. Utilize isset() para verificar se uma variável existe.

Referências

Exercícios

  1. Crie uma variável chamada $cidade com o valor "São Paulo" e exiba seu tipo usando gettype().

    ✓ Resposta:
    $cidade = "São Paulo";
    echo gettype($cidade); // string
  2. Declare uma variável global $contador = 0 e dentro de uma função incremente seu valor usando a palavra-chave global. Exiba o valor após chamar a função.

    ✓ Resposta:
    $contador = 0;
    
    function incrementar() {
        global $contador;
        $contador++;
    }
    
    incrementar();
    echo $contador; // 1
  3. Utilize variáveis variáveis para criar uma variável com nome dinâmico: a partir de $animal = "cachorro", crie $cachorro com valor "Rex" e exiba-o.

    ✓ Resposta:
    $animal = "cachorro";
    $$animal = "Rex";
    echo $cachorro; // Rex
  4. Explique a diferença entre escopo global e local com um exemplo de código que cause erro ao tentar acessar uma variável local fora da função.

    ✓ Resposta:
    function teste() {
        $local = "dentro da função";
    }
    teste();
    echo $local; // Erro: variável indefinida

    A variável $local só existe dentro da função, causando erro ao tentar acessá-la fora.

  5. Crie uma função que use uma variável estática para contar quantas vezes foi chamada. Chame-a três vezes e exiba o valor.

    ✓ Resposta:
    function contar() {
        static $chamadas = 0;
        $chamadas++;
        echo $chamadas . " ";
    }
    
    contar(); // 1
    contar(); // 2
    contar(); // 3