Curso Completo de PHP — Parte 02

Variáveis, tipos de dados e operadores

A base de qual­quer pro­gra­ma PHP está aqui. Vamos enten­der como o PHP armazena, clas­si­fi­ca e opera sobre dados.


Variáveis

Em PHP toda var­iáv­el começa com $. Não é pre­ciso declarar o tipo — o PHP desco­bre soz­in­ho.

php

<?php
$nome    = "Ana";       // string
$idade   = 28;          // inteiro
$altura  = 1.65;        // float
$ativo   = true;        // booleano
$nada    = null;        // ausência de valor

// Nomes válidos: letras, números e _ (não pode começar com número)
$minha_variavel = 1;
$minhaVariavel  = 2;   // camelCase também funciona
// $1variavel   = 3;   // INVÁLIDO — erro!

Var­iáveis em PHP são case-sen­si­tive: $Nome e $nome são var­iáveis difer­entes.


Tipos de dados

PHP tem 8 tipos nativos. Os mais usa­dos são:

String

Tex­to entre aspas sim­ples ou duplas. A difer­ença impor­tante é que aspas duplas inter­po­lam var­iáveis:

php

<?php
$produto = "camiseta";
$preco   = 49.90;

// Aspas duplas: interpola variáveis dentro da string
echo "O $produto custa R$ $preco";
// O camiseta custa R$ 49.9

// Aspas simples: exibe literalmente, sem interpolar
echo 'O $produto custa R$ $preco';
// O $produto custa R$ $preco

// Sintaxe curly para casos ambíguos
echo "Temos {$produto}s em estoque";
// Temos camisetas em estoque

Integer (inteiro)

Números sem casas dec­i­mais. Pode ser neg­a­ti­vo.

php

<?php
$positivo  =  42;
$negativo  = -10;
$binario   = 0b1010;   // 10 em binário
$octal     = 0777;     // 511 em octal
$hex       = 0x1A;     // 26 em hexadecimal

$grande    = 1_000_000; // PHP 7.4+: underscore para legibilidade
echo $grande;           // 1000000

Float (ponto flutuante)

Números com casas dec­i­mais:

php

<?php
$pi       = 3.14159;
$cientifico = 1.5e3;   // 1500.0
$negativo   = -2.7e-2; // -0.027

// ATENÇÃO: floats têm imprecisão inerente
echo 0.1 + 0.2;        // 0.30000000000000004 ← não é bug, é IEEE 754
echo round(0.1 + 0.2, 2); // 0.3 ← use round() para dinheiro

Boolean

Ver­dadeiro ou fal­so. Muito usa­do em condi­cionais:

php

<?php
$logado  = true;
$banido  = false;

// Valores que o PHP trata como false (falsy):
// false, 0, 0.0, "", "0", [], null

// Valores que o PHP trata como true (truthy):
// qualquer número != 0, string não vazia, array não vazio

Null

Rep­re­sen­ta ausên­cia de val­or:

php

<?php
$dado = null;

var_dump($dado);         // NULL
var_dump(isset($dado));  // bool(false) — isset() retorna false para null

Inspecionando variáveis

Duas funções essen­ci­ais para debug:

php

<?php
$dados = [1, "dois", true, null, 3.14];

// var_dump: mostra tipo E valor (mais completo)
var_dump($dados);
/*
array(5) {
  [0]=> int(1)
  [1]=> string(4) "dois"
  [2]=> bool(true)
  [3]=> NULL
  [4]=> float(3.14)
}
*/

// print_r: mais legível, sem tipos (bom para arrays)
print_r($dados);
/*
Array ( [0] => 1 [1] => dois [2] => 1 [3] => [4] => 3.14 )
*/

// gettype: retorna o tipo como string
echo gettype(3.14);  // double
echo gettype("oi");  // string

Conversão de tipos (casting)

O PHP con­verte tipos auto­mati­ca­mente, mas você pode forçar a con­ver­são:

php

<?php
$texto  = "42abc";
$numero = "3.14";
$booleano = true;

// Casting explícito
echo (int)    $texto;    // 42   — para na letra
echo (float)  $numero;   // 3.14
echo (string) $booleano; // "1"  — true vira "1", false vira ""
echo (bool)   0;         // false (exibe vazio)
echo (array)  "olá";     // Array com um elemento: ["olá"]

// Funções de conversão (mais seguras)
echo intval("42abc");    // 42
echo floatval("3.14x");  // 3.14
echo strval(100);        // "100"
echo boolval(0);         // false

Operadores

Aritméticos

php

<?php
$a = 10;
$b = 3;

echo $a + $b;   // 13  — soma
echo $a - $b;   // 7   — subtração
echo $a * $b;   // 30  — multiplicação
echo $a / $b;   // 3.333... — divisão (sempre float se não for exato)
echo $a % $b;   // 1   — módulo (resto da divisão)
echo $a ** $b;  // 1000 — potência (10³)

// Incremento e decremento
$x = 5;
echo $x++;  // 5 — retorna ANTES de incrementar
echo $x;    // 6
echo ++$x;  // 7 — incrementa ANTES de retornar
echo $x--;  // 7 — retorna ANTES de decrementar
echo $x;    // 6

Atribuição

php

<?php
$n = 10;
$n += 5;   // $n = $n + 5  → 15
$n -= 3;   // $n = $n - 3  → 12
$n *= 2;   // $n = $n * 2  → 24
$n /= 4;   // $n = $n / 4  → 6
$n %= 4;   // $n = $n % 4  → 2
$n **= 3;  // $n = $n ** 3 → 8

$texto  = "Olá";
$texto .= ", mundo!";  // concatenação: "Olá, mundo!"

Comparação — == vs ===

Essa difer­ença é uma das mais impor­tantes do PHP:

php

<?php
// == (igualdade fraca): compara VALOR, converte tipos
var_dump(0 == "a");     // true  ← CUIDADO! PHP 7
var_dump(0 == false);   // true
var_dump("1" == 1);     // true
var_dump("" == false);  // true

// === (igualdade estrita): compara VALOR e TIPO
var_dump(0 === "a");    // false ← correto
var_dump("1" === 1);    // false
var_dump(1 === true);   // false

// Regra de ouro: sempre prefira === em comparações

php

<?php
// Tabela de operadores de comparação
$a = 10; $b = 20;

var_dump($a == $b);   // false — igual (fraco)
var_dump($a === $b);  // false — idêntico (estrito)
var_dump($a != $b);   // true  — diferente (fraco)
var_dump($a !== $b);  // true  — não idêntico (estrito)
var_dump($a < $b);    // true  — menor
var_dump($a > $b);    // false — maior
var_dump($a <= $b);   // true  — menor ou igual
var_dump($a >= $b);   // false — maior ou igual

// Spaceship operator <=> (PHP 7+): retorna -1, 0 ou 1
echo 1 <=> 2;   // -1 (menor)
echo 2 <=> 2;   //  0 (igual)
echo 3 <=> 2;   //  1 (maior)
// Muito usado em funções de ordenação (usort)

Lógicos

php

<?php
$logado = true;
$admin  = false;

// && e || (alta precedência — prefira estes)
var_dump($logado && $admin);   // false — ambos precisam ser true
var_dump($logado || $admin);   // true  — basta um ser true
var_dump(!$logado);            // false — negação

// and e or (baixa precedência — cuidado!)
$resultado = true and false;   // $resultado = true (!) — armadilha
$resultado = (true and false); // $resultado = false  — use parênteses

Ternário e Null Coalescing

php

<?php
$idade = 20;

// Ternário: condição ? se_true : se_false
$status = ($idade >= 18) ? "adulto" : "menor";
echo $status; // adulto

// Ternário encurtado ?: (Elvis operator)
$nome = "" ?: "Visitante";   // se falsy, usa o da direita
echo $nome; // Visitante

// Null coalescing ?? — só verifica null/indefinido
$usuario = null;
$nome = $usuario ?? "Anônimo";
echo $nome; // Anônimo

// Encadeado
$a = null; $b = null; $c = "encontrei!";
echo $a ?? $b ?? $c; // encontrei!

// ??= atribuição com null coalescing (PHP 7.4+)
$config = null;
$config ??= "valor padrão";
echo $config; // valor padrão

Constantes

Difer­ente de var­iáveis, con­stantes não mudam e não lev­am $:

php

<?php
// define() — tradicional, funciona em qualquer escopo
define('PI', 3.14159);
define('APP_NAME', 'Meu Sistema');
define('MAX_TENTATIVAS', 3);

// const — moderno, só funciona no escopo global ou em classes
const VERSAO = '1.0.0';

echo PI;             // 3.14159
echo APP_NAME;       // Meu Sistema

// Constantes predefinidas do PHP
echo PHP_VERSION;    // 8.3.x
echo PHP_EOL;        // quebra de linha do SO
echo PHP_INT_MAX;    // 9223372036854775807
echo PHP_FLOAT_MAX;  // 1.7976931348623E+308
echo __FILE__;       // caminho completo do arquivo atual
echo __LINE__;       // número da linha atual

Exemplo prático completo — calculadora de IMC

php

<?php
// Dados de entrada
$peso   = 78.5;   // kg
$altura = 1.75;   // metros

// Cálculo
$imc = $peso / ($altura ** 2);
$imc = round($imc, 2);  // arredonda para 2 casas

// Classificação com operadores de comparação
if ($imc < 18.5) {
    $classificacao = "Abaixo do peso";
    $cor = "#3b82f6";
} elseif ($imc < 25.0) {
    $classificacao = "Peso normal";
    $cor = "#22c55e";
} elseif ($imc < 30.0) {
    $classificacao = "Sobrepeso";
    $cor = "#f59e0b";
} else {
    $classificacao = "Obesidade";
    $cor = "#ef4444";
}

$nome = "Carlos";
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head><meta charset="UTF-8"><title>IMC</title></head>
<body style="font-family: sans-serif; padding: 2rem; text-align: center;">

  <h2>Resultado do IMC de <?= $nome ?></h2>

  <p style="font-size: 3rem; font-weight: bold; color: <?= $cor ?>">
    <?= $imc ?>
  </p>

  <p style="font-size: 1.25rem; color: <?= $cor ?>">
    <?= $classificacao ?>
  </p>

  <p style="color: #666">
    Peso: <?= $peso ?>kg &nbsp;|&nbsp; Altura: <?= $altura ?>m
  </p>

</body>
</html>

Resumo do capítulo

Con­ceitoDetal­he
Var­iáveisSem­pre com $, tipagem dinâmi­ca, case-sen­si­tive
Tiposstring, int, float, bool, null (+ array e object)
Debugvar_dump() mostra tipo+valor, print_r() é mais legív­el
Cast­ing(int), (float), (string) ou intval(), floatval()
== vs ===== com­para val­or, === com­para val­or e tipo
??Null coa­lesc­ing — fall­back quan­do a var­iáv­el é null
Con­stantesdefine() ou const, sem $, imutáveis

Con­tin­uar o cur­so de PHP — Parte 3

Posts Similares

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *