Fundamentos do PHP
Variáveis, constantes e tipos de dados em PHP
Aprenda sobre variáveis, constantes e tipos de dados em php
Módulo 1: Introdução ao PHP e Ambiente de Desenvolvimento
Aula: Variáveis, Constantes e Tipos de Dados em PHP
Olá! 👋 Bem-vindos à nossa aula sobre os blocos de construção fundamentais de qualquer programa PHP: variáveis, constantes e tipos de dados. Entender esses conceitos é crucial para escrever código eficaz e sem erros. Vamos mergulhar!
1. Introdução Clara: Guardando e Classificando Informações 📦
No mundo da programação, frequentemente precisamos armazenar informações para usá-las, modificá-las ou exibi-las. É aqui que entram as variáveis e constantes. Elas são como "caixas" ou "rótulos" para guardar valores. Além disso, cada pedaço de informação tem uma "natureza" específica, como um número, um texto ou uma data. Essa "natureza" é o que chamamos de tipo de dado.
Nesta aula, você aprenderá:
- O que são e como usar variáveis para armazenar dados mutáveis.
- O que são e como usar constantes para armazenar dados imutáveis.
- Os diferentes tipos de dados que o PHP suporta e como eles afetam o comportamento do seu código.
Vamos começar! 🚀
2. Explicação Detalhada com Exemplos
2.1. Variáveis em PHP 🏷️
Uma variável é um contêiner para armazenar informações. Em PHP, as variáveis são muito flexíveis.
- Sintaxe: Todas as variáveis em PHP começam com o símbolo de cifrão (
$). - Atribuição: O operador de atribuição é o sinal de igual (
=). - Case Sensitivity: Nomes de variáveis são case-sensitive (diferenciam maiúsculas de minúsculas).
$nomeé diferente de$Nome. - Dinamicamente Tipadas: O PHP é uma linguagem dinamicamente tipada, o que significa que você não precisa declarar o tipo de dado da variável. O PHP infere o tipo com base no valor atribuído. Além disso, o tipo de uma variável pode mudar durante a execução do script.
Regras para Nomes de Variáveis:
- Devem começar com
$. - Devem ser seguidos por uma letra ou um underscore (
_). - Podem conter letras, números e underscores.
- Não podem conter espaços.
Exemplo Oficial de Variáveis:
<?php
// Exemplo 1: Declarando e atribuindo valores
$nomeCompleto = "João da Silva"; // Variável do tipo string
$idade = 30; // Variável do tipo integer
$altura = 1.75; // Variável do tipo float
$estaAtivo = true; // Variável do tipo boolean
echo "Nome: " . $nomeCompleto . "\n";
echo "Idade: " . $idade . " anos\n";
echo "Altura: " . $altura . "m\n";
echo "Ativo: " . ($estaAtivo ? 'Sim' : 'Não') . "\n\n";
// Exemplo 2: Case sensitivity
$fruta = "Maçã";
$Fruta = "Banana"; // Variável diferente de $fruta
echo "Minha fruta favorita é: " . $fruta . "\n";
echo "Outra fruta é: " . $Fruta . "\n\n";
// Exemplo 3: Tipo dinâmico (re-atribuição com tipo diferente)
$valor = 100; // Tipo integer
echo "Valor inicial: " . $valor . " (Tipo: " . gettype($valor) . ")\n";
$valor = "Cem"; // Tipo string
echo "Valor após re-atribuição: " . $valor . " (Tipo: " . gettype($valor) . ")\n";
?>2.2. Constantes em PHP 🔒
Constantes são identificadores (nomes) para um valor simples. Como o nome sugere, esse valor não pode ser alterado durante a execução do script.
- Definição: Podem ser definidas usando a função
define()ou a palavra-chaveconst. - Convenção: Por convenção, nomes de constantes são geralmente escritos em maiúsculas.
- Escopo: Constantes são automaticamente globais em todo o script.
- Case Sensitivity: Por padrão, constantes definidas com
define()são case-sensitive. Você pode torná-las case-insensitive passandotruecomo terceiro argumento (mas não é recomendado). Constantes definidas comconstsão sempre case-sensitive.
Métodos para Definir Constantes:
-
define(name, value, case_insensitive):- Usado para definir constantes em tempo de execução.
name: O nome da constante.value: O valor da constante.case_insensitive: (Opcional)truepara tornar a constante case-insensitive. Padrão éfalse.
-
const NOME_DA_CONSTANTE = valor;:- Introduzido no PHP 5.3.
- Usado para definir constantes em tempo de compilação (fora de classes, interfaces ou traits).
- Mais performático que
define()em alguns cenários.
Exemplo Oficial de Constantes:
<?php
// Exemplo 1: Usando define()
define("SITE_NOME", "Meu Blog PHP");
define("VERSAO_APP", 1.0);
echo "Nome do site: " . SITE_NOME . "\n";
echo "Versão do aplicativo: " . VERSAO_APP . "\n\n";
// Tentar redefinir uma constante causará um erro (ou um aviso dependendo da versão)
// define("SITE_NOME", "Novo Nome"); // Isso geraria um erro fatal
// Exemplo 2: Usando const (PHP 5.3+)
const MAX_USUARIOS = 500;
const STATUS_OK = 200;
echo "Número máximo de usuários: " . MAX_USUARIOS . "\n";
echo "Status de sucesso HTTP: " . STATUS_OK . "\n\n";
// Exemplo 3: Constantes Mágicas (Predefinidas)
// O PHP tem um conjunto de constantes pré-definidas que mudam de valor dependendo de onde são usadas.
echo "Linha atual: " . __LINE__ . "\n";
echo "Caminho completo do arquivo: " . __FILE__ . "\n";
echo "Nome da função (se dentro de uma): " . __FUNCTION__ . "\n"; // Vazio aqui, pois não estamos em uma função
echo "Nome da classe (se dentro de uma): " . __CLASS__ . "\n"; // Vazio aqui, pois não estamos em uma classe
?>2.3. Tipos de Dados em PHP 📊
O PHP suporta vários tipos de dados. Compreender os tipos de dados é fundamental para manipular informações corretamente e evitar erros.
O PHP classifica os tipos de dados em:
- Tipos Escalares (Unicidade): Representam um único valor.
string: Uma sequência de caracteres.int: Números inteiros (sem casas decimais).float(oudouble): Números de ponto flutuante (com casas decimais).bool: Valores booleanos (verdadeiro ou falso).
- Tipos Compostos (Coleções): Podem armazenar múltiplos valores.
array: Um mapa ordenado. Pode ser usado como um array, lista, hash map, dicionário, coleção, pilha, fila, etc.object: Uma instância de uma classe.
- Tipos Especiais:
resource: Uma variável especial, que contém uma referência a um recurso externo (por exemplo, um arquivo aberto, uma conexão de banco de dados).null: Indica que uma variável não tem valor.
Exemplo Oficial de Tipos de Dados:
<?php
// --- Tipos Escalares ---
// 1. String
$nome = "Alice"; // Aspas duplas
$mensagem = 'Olá, mundo!'; // Aspas simples
$paragrafo = "Este é um texto com 'aspas simples' e \"aspas duplas\".";
echo "String 1: " . $nome . "\n";
echo "String 2: " . $mensagem . "\n";
echo "String 3: " . $paragrafo . "\n";
echo "Tipo de \$nome: " . gettype($nome) . "\n\n";
// 2. Integer
$idade = 25;
$quantidade = -10;
$numeroHex = 0x1A; // 26 em decimal
$numeroOctal = 012; // 10 em decimal
$numeroBinario = 0b1011; // 11 em decimal
echo "Integer 1: " . $idade . "\n";
echo "Integer 2: " . $quantidade . "\n";
echo "Integer Hex: " . $numeroHex . "\n";
echo "Integer Octal: " . $numeroOctal . "\n";
echo "Integer Binário: " . $numeroBinario . "\n";
echo "Tipo de \$idade: " . gettype($idade) . "\n\n";
// 3. Float (Double)
$preco = 19.99;
$temperatura = -2.5;
$pi = 3.14159;
echo "Float 1: " . $preco . "\n";
echo "Float 2: " . $temperatura . "\n";
echo "Float PI: " . $pi . "\n";
echo "Tipo de \$preco: " . gettype($preco) . "\n\n";
// 4. Boolean
$usuarioLogado = true;
$temPermissao = false;
echo "Usuário Logado: " . ($usuarioLogado ? 'Sim' : 'Não') . "\n";
echo "Tem Permissão: " . ($temPermissao ? 'Sim' : 'Não') . "\n";
echo "Tipo de \$usuarioLogado: " . gettype($usuarioLogado) . "\n\n";
// --- Tipos Compostos ---
// 5. Array
$frutas = ["Maçã", "Banana", "Laranja"]; // Array indexado
$usuario = [
"nome" => "Carlos",
"email" => "carlos@example.com",
"idade" => 35
]; // Array associativo
echo "Fruta 1: " . $frutas[0] . "\n";
echo "Email do usuário: " . $usuario["email"] . "\n";
echo "Tipo de \$frutas: " . gettype($frutas) . "\n\n";
// 6. Object (Exemplo simples, classes serão abordadas em outro módulo)
class Pessoa {
public $nome;
function __construct($n) {
$this->nome = $n;
}
}
$pessoa1 = new Pessoa("Maria");
echo "Nome do objeto: " . $pessoa1->nome . "\n";
echo "Tipo de \$pessoa1: " . gettype($pessoa1) . "\n\n";
// --- Tipos Especiais ---
// 7. Resource (Exemplo de abertura de arquivo)
$arquivo = fopen("exemplo.txt", "w"); // Abre o arquivo para escrita
if (is_resource($arquivo)) {
fwrite($arquivo, "Conteúdo de exemplo.");
echo "Arquivo 'exemplo.txt' aberto e escrito. Tipo: " . gettype($arquivo) . "\n";
fclose($arquivo); // Fecha o arquivo
} else {
echo "Falha ao abrir o arquivo.\n";
}
echo "Tipo de \$arquivo (após fechamento, pode variar): " . gettype($arquivo) . "\n\n";
// 8. Null
$variavelNula = null;
$outraVariavel; // Declarada, mas não atribuída, tem valor NULL por padrão
echo "Variável Nula: " . var_export($variavelNula, true) . "\n"; // var_export mostra 'NULL'
echo "Tipo de \$variavelNula: " . gettype($variavelNula) . "\n";
echo "Variável não atribuída é nula? " . (is_null($outraVariavel) ? 'Sim' : 'Não') . "\n\n";
// --- Type Juggling (Coerção de Tipos) ---
// O PHP tenta converter tipos automaticamente quando necessário.
$numString = "10";
$numInt = 5;
$resultado = $numString + $numInt; // "10" é convertido para 10
echo "Resultado de '10' + 5: " . $resultado . "\n"; // Output: 15
echo "Tipo do resultado: " . gettype($resultado) . "\n\n";
$boolTrue = true;
$intNum = 1;
$resultadoBoolInt = $boolTrue + $intNum; // true é convertido para 1
echo "Resultado de true + 1: " . $resultadoBoolInt . "\n"; // Output: 2
?>Observação sobre gettype(): A função gettype() é útil para depuração, mas para verificações de tipo robustas em lógica de programação, é mais comum usar funções como is_string(), is_int(), is_array(), is_null(), etc.
5. Exercícios/Desafios 🧠
Para fixar o conteúdo, tente resolver os seguintes desafios:
-
Variáveis e Tipos:
- Declare uma variável
$nomeProdutoe atribua a ela o valor"Smartphone X". - Declare uma variável
$precoUnitarioe atribua a ela o valor999.99. - Declare uma variável
$quantidadeEstoquee atribua a ela o valor50. - Declare uma variável
$disponivelParaVendae atribua a ela o valortrue. - Exiba o valor e o tipo de cada uma dessas variáveis usando
echoegettype().
- Declare uma variável
-
Constantes:
- Defina uma constante
IMPOSTO_PADRAOcom o valor0.18(18%). - Defina uma constante
NOME_EMPRESAcom o valor"Tech Solutions Ltda."usandoconst. - Calcule o preço final de um produto de
$150.00aplicando oIMPOSTO_PADRAOe armazene o resultado em uma nova variável$precoComImposto. - Exiba o
NOME_EMPRESA, oIMPOSTO_PADRAOe o$precoComImposto.
- Defina uma constante
-
Coerção de Tipos (Type Juggling):
- Preveja o resultado e o tipo de dado final das seguintes operações:
"100" + 20"PHP" . 7.4true + false"5 maçãs" + 3
- Escreva o código PHP para verificar suas previsões.
- Preveja o resultado e o tipo de dado final das seguintes operações:
6. Resumo e Próximos Passos 🚀
Nesta aula, você aprendeu os pilares da manipulação de dados em PHP:
- Variáveis: Contêineres flexíveis para armazenar dados que podem mudar. Sempre começam com
$. - Constantes: Valores fixos que não podem ser alterados após a definição, ideais para configurações e valores globais. Definidas com
define()ouconst. - Tipos de Dados: A "natureza" dos valores (string, int, float, bool, array, object, resource, null). O PHP é dinamicamente tipado e realiza coerção de tipos automaticamente.
Dominar esses conceitos é o primeiro passo para escrever código PHP robusto. Na próxima aula, exploraremos os Operadores em PHP, que nos permitirão realizar operações com essas variáveis e constantes.
Até lá, pratique bastante! Se tiver dúvidas, revise a documentação oficial do PHP: