Variáveis são fundamentais em qualquer linguagem de programação, pois permitem armazenar e manipular dados dinamicamente. Em PHP, as variáveis são representadas pelo símbolo de cifrão ($) seguido de um nome, e possuem características únicas como tipagem dinâmica e escopos bem definidos. Nesta aula, vamos explorar como declarar variáveis, como o PHP lida com tipos, o conceito de escopo (local, global, estático) e um recurso interessante chamado variáveis variáveis, que permite usar o valor de uma variável como nome de outra.

Declaração e $

Em PHP, toda variável deve ser precedida pelo símbolo $ (cifrão). O nome da variável deve começar com uma letra ou sublinhado (_), seguido de letras, números ou sublinhados. A declaração é implícita: a variável é criada no momento em que recebe um valor. Não é necessário declarar o tipo, pois o PHP é dinamicamente tipado.

Exemplos de declaração:

<?php
$nome = "João"; // string
$idade = 25;      // inteiro
$altura = 1.75;   // float
$ativo = true;    // booleano
?>

Regras de nomenclatura:

  • Nomes são case-sensitive: $nome e $Nome são diferentes.
  • Não pode começar com número: $1nome é inválido.
  • Pode conter underscores: $meu_nome.
  • Evite nomes muito genéricos ou que conflitem com palavras reservadas (ex: $this, $class).

Tipagem dinâmica

PHP é uma linguagem de tipagem dinâmica, o que significa que uma variável pode mudar de tipo durante a execução. O tipo é determinado pelo valor atribuído, e você pode alterá-lo atribuindo um valor de tipo diferente.

Exemplo de mutabilidade de tipo:

<?php
$var = 10;        // inteiro
$var = "texto";   // agora é string
$var = 3.14;      // agora é float
?>

Para verificar o tipo de uma variável, use a função var_dump() ou gettype():

<?php
$valor = 42;
var_dump($valor); // int(42)
echo gettype($valor); // integer
?>

O PHP também realiza coerção automática de tipos em operações, mas é importante estar atento a comportamentos inesperados. Por exemplo, a concatenação de uma string com um número converte o número para string.

Escopo

Escopo determina onde uma variável pode ser acessada. Em PHP, existem três escopos principais: local, global e estático.

Escopo local: Variáveis definidas dentro de uma função são locais a ela, não acessíveis fora.

<?php
function teste() {
    $x = 10; // local
    echo $x;
}
teste(); // 10
echo $x; // erro: variável indefinida
?>

Escopo global: Variáveis definidas fora de funções são globais, mas não podem ser acessadas diretamente dentro de funções. Para acessá-las, use a palavra-chave global ou o array $GLOBALS.

<?php
$y = 20; // global
function teste2() {
    global $y;
    echo $y; // 20
}
teste2();
?>

Escopo estático: Variáveis estáticas dentro de funções mantêm seu valor entre chamadas, mas são acessíveis apenas dentro da função.

<?php
function contador() {
    static $count = 0;
    $count++;
    echo $count;
}
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 com a sintaxe $$.

Exemplo básico:

<?php
$nome = "João";
$$nome = "Olá, João!"; // cria $João
echo $João; // Olá, João!
?>

Isso pode ser útil em situações dinâmicas, como quando você precisa criar variáveis com base em dados de entrada, mas deve ser usado com cuidado para não tornar o código confuso.

Exemplo com array:

<?php
$chave = "cor";
$$chave = "azul"; // cria $cor
echo $cor; // azul
?>

Variáveis variáveis podem ser combinadas com arrays e outras estruturas, mas é importante lembrar que o nome da variável deve ser válido (não pode conter espaços, por exemplo).

Boas práticas

  • Use nomes descritivos e siga um padrão de nomenclatura (ex: camelCase ou snake_case).
  • Evite variáveis variáveis a menos que seja estritamente necessário, pois dificultam a legibilidade e depuração.
  • Inicialize sempre as variáveis antes de usá-las para evitar erros de índice indefinido.
  • Prefira escopo local sempre que possível para evitar efeitos colaterais.

Referências

Exercícios

  1. Crie uma variável $cidade com o valor "São Paulo" e exiba seu conteúdo com echo.
  2. ✓ Resposta:
    <?php
    $cidade = "São Paulo";
    echo $cidade;
    ?>
  3. Declare uma variável $numero com valor 10 e depois atribua a string "dez" a ela. Mostre o tipo final usando var_dump().
  4. ✓ Resposta:
    <?php
    $numero = 10;
    $numero = "dez";
    var_dump($numero); // string(3) "dez"
    ?>
  5. Crie uma função que utilize uma variável global $contador e a incremente a cada chamada. Teste chamando a função duas vezes.
  6. ✓ Resposta:
    <?php
    $contador = 0;
    function incrementa() {
        global $contador;
        $contador++;
    }
    incrementa();
    incrementa();
    echo $contador; // 2
    ?>
  7. Use variáveis variáveis para criar uma variável com o nome armazenado em $chave = "nome" e atribua a ela seu próprio nome. Exiba o valor da nova variável.
  8. ✓ Resposta:
    <?php
    $chave = "nome";
    $$chave = "Maria";
    echo $nome; // Maria
    ?>
  9. Escreva uma função que use uma variável estática para contar quantas vezes foi chamada. Exiba o valor a cada chamada.
  10. ✓ Resposta:
    <?php
    function contador() {
        static $vezes = 0;
        $vezes++;
        echo "Chamada número $vezes\n";
    }
    contador(); // Chamada número 1
    contador(); // Chamada número 2
    ?>