Variáveis
Esta aula aborda o conceito de variáveis em PHP, incluindo declaração com o cifrão, tipagem dinâmica, escopo de variáveis e o recurso de variáveis variáveis. O conteúdo é prático e progressivo, com exemplos de código e exercícios para fixação.
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
- PHP: Variáveis - Manual
- PHP: Escopo de variáveis - Manual
- PHP: Variáveis variáveis - Manual
- PHP: gettype - Manual
- PHP: var_dump - Manual
Exercícios
- Crie uma variável $cidade com o valor "São Paulo" e exiba seu conteúdo com echo.
- Declare uma variável $numero com valor 10 e depois atribua a string "dez" a ela. Mostre o tipo final usando var_dump().
- Crie uma função que utilize uma variável global $contador e a incremente a cada chamada. Teste chamando a função duas vezes.
- 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.
- Escreva uma função que use uma variável estática para contar quantas vezes foi chamada. Exiba o valor a cada chamada.
<?php
$cidade = "São Paulo";
echo $cidade;
?>
<?php
$numero = 10;
$numero = "dez";
var_dump($numero); // string(3) "dez"
?>
<?php
$contador = 0;
function incrementa() {
global $contador;
$contador++;
}
incrementa();
incrementa();
echo $contador; // 2
?>
<?php
$chave = "nome";
$$chave = "Maria";
echo $nome; // Maria
?>
<?php
function contador() {
static $vezes = 0;
$vezes++;
echo "Chamada número $vezes\n";
}
contador(); // Chamada número 1
contador(); // Chamada número 2
?>