<h2>Variáveis em PHP</h2>
<p>Uma variável é um espaço de memória que armazena um valor. Em PHP, todas as variáveis são precedidas pelo símbolo <code>$</code> e não precisam ter seu tipo declarado explicitamente — a linguagem infere o tipo automaticamente. O nome da variável deve começar com uma letra ou underscore, seguido de letras, números ou underscores.</p>
<pre><code class="language-php"><?php
$nome = "João Silva";
$idade = 28;
$altura = 1.75;
$ativo = true;
echo "Nome: " . $nome . ", Idade: " . $idade;
// Saída: Nome: João Silva, Idade: 28
?></code></pre>
<p>PHP permite sobrescrever variáveis e reatribuir tipos sem avisos — isso oferece flexibilidade, mas exige cuidado do programador. Use convenções de nomenclatura como <code>camelCase</code> para melhorar a legibilidade. Variáveis não inicializadas geram um aviso se acessadas, portanto sempre inicialize antes de usar.</p>
<h3>Escopo de Variáveis</h3>
<p>O escopo define onde uma variável pode ser acessada. Variáveis globais são acessíveis em todo o script, enquanto variáveis locais existem apenas dentro de funções. Use a palavra-chave <code>global</code> para acessar variáveis globais dentro de uma função ou use a superglobal <code>$GLOBALS</code>.</p>
<pre><code class="language-php"><?php
$globalVar = "Sou global";
function testaEscopo() {
$localVar = "Sou local";
global $globalVar;
echo $globalVar; // Funciona
echo $localVar; // Funciona aqui
}
testaEscopo();
// echo $localVar; // Erro: não existe fora da função
?></code></pre>
<h2>Tipos de Dados em PHP</h2>
<p>PHP suporta oito tipos de dados fundamentais: quatro escalares (<code>string</code>, <code>int</code>, <code>float</code>, <code>bool</code>) e quatro compostos (<code>array</code>, <code>object</code>, <code>callable</code>, <code>iterable</code>), além de dois especiais (<code>null</code> e <code>resource</code>).</p>
<pre><code class="language-php"><?php
// Escalares
$string = "Olá, Mundo!";
$inteiro = 42;
$flutuante = 3.14159;
$booleano = true;
// Compostos
$array = ["maçã", "banana", "laranja"];
$associativo = ["nome" => "Maria", "idade" => 30];
// Especial
$nulo = null;
var_dump($string, $inteiro, $flutuante, $booleano);
?></code></pre>
<p>Você pode verificar o tipo de uma variável com <code>gettype()</code> ou funções especializadas como <code>is_string()</code>, <code>is_int()</code>, <code>is_array()</code>. A conversão de tipo é automática em muitos contextos (casting implícito), mas também pode ser feita explicitamente usando <code>(int)</code>, <code>(string)</code>, <code>(array)</code>, entre outros.</p>
<h3>Strings em Profundidade</h3>
<p>Strings são sequências de caracteres. PHP oferece quatro formas de criar strings: aspas duplas (com interpolação), aspas simples (literal), heredoc e nowdoc. A interpolação permite inserir variáveis diretamente na string entre aspas duplas, economizando concatenações.</p>
<pre><code class="language-php"><?php
$produto = "Notebook";
$preco = 2500;
// Interpolação (funciona)
echo "Produto: $produto, Preço: R$ $preco";
// Concatenação (também funciona)
echo "Produto: " . $produto . ", Preço: R$ " . $preco;
// Heredoc (interpola variáveis)
$texto = <<<EOT
Bem-vindo ao $produto!
Preço especial: R$ $preco
EOT;
echo $texto;
?></code></pre>
<h3>Arrays e Tipos Compostos</h3>
<p>Arrays são coleções ordenadas de valores. PHP oferece arrays indexados (chaves numéricas automáticas) e arrays associativos (chaves customizadas). Ambos são incrivelmente flexíveis e podem conter qualquer tipo de dado, inclusive outros arrays.</p>
<pre><code class="language-php"><?php
// Indexado
$frutas = ["maçã", "banana", "laranja"];
echo $frutas[0]; // "maçã"
// Associativo
$usuario = [
"nome" => "Carlos",
"email" => "carlos@example.com",
"idade" => 35
];
echo $usuario["nome"]; // "Carlos"
// Multidimensional
$matriz = [
["1,1" => 10, "1,2" => 20],
["2,1" => 30, "2,2" => 40]
];
echo $matriz[0]["1,1"]; // 10
?></code></pre>
<h2>Operadores em PHP</h2>
<p>Operadores executam ações sobre variáveis e valores. Os principais grupos são: aritméticos (<code>+</code>, <code>-</code>, <code>*</code>, <code>/</code>, <code>%</code>), de atribuição (<code>=</code>, <code>+=</code>, <code>-=</code>), de comparação (<code>==</code>, <code>===</code>, <code>!=</code>, <code>></code>), lógicos (<code>&&</code>, <code>||</code>, <code>!</code>) e especiais como spaceship (<code><=></code>) e null coalescing (<code>??</code>).</p>
<pre><code class="language-php"><?php
// Aritméticos
echo 10 + 5; // 15
echo 10 % 3; // 1 (resto da divisão)
// Comparação: igualdade vs identidade
var_dump(5 == "5"); // true (comparação solta)
var_dump(5 === "5"); // false (tipo diferente)
// Lógicos
$x = true;
$y = false;
echo ($x && $y) ? "Ambos verdadeiros" : "Nem todos verdadeiros";
// Null coalescing (retorna primeiro valor não-nulo)
$nome = null;
echo $nome ?? "Anônimo"; // "Anônimo"
// Spaceship (comparação tri-valoatória)
echo (5 <=> 3); // 1 (5 é maior)
echo (3 <=> 5); // -1 (3 é menor)
echo (5 <=> 5); // 0 (são iguais)
?></code></pre>
<h3>Precedência e Associatividade</h3>
<p>A ordem de execução dos operadores importa. Operadores aritméticos têm precedência maior que lógicos, e você pode usar parênteses para forçar uma ordem específica. Entender precedência evita bugs sutis em expressões complexas.</p>
<pre><code class="language-php"><?php
// Sem parênteses: * tem precedência sobre +
echo 2 + 3 * 4; // 14 (não 20)
// Com parênteses: controla a ordem
echo (2 + 3) * 4; // 20
// Atribuição em cadeia (associatividade à direita)
$a = $b = $c = 10;
echo $a; // 10
// Operador ternário (associatividade à esquerda — cuidado!)
$resultado = true ? "A" : true ? "B" : "C";
echo $resultado; // "A"
?></code></pre>
<h2>Conclusão</h2>
<p>Dominar variáveis, tipos de dados e operadores é o alicerce para programar em PHP com segurança. Lembre-se de três pontos: (1) <strong>sempre inicialize variáveis</strong> antes de usá-las e respeite o escopo para evitar conflitos; (2) <strong>use <code>===</code> em comparações</strong> críticas, pois <code>==</code> pode levar a comportamentos inesperados em PHP; (3) <strong>aproveite operadores modernos</strong> como null coalescing (<code>??</code>) e spaceship (<code><=></code>) para escrever código mais limpo e expressivo.</p>
<p>Com essa base sólida, você está pronto para explorar estruturas de controle, funções e programação orientada a objetos com confiança.</p>
<h2>Referências</h2>
<ul>
<li><a href="https://www.php.net/manual/en/language.variables.php" target="_blank" rel="noopener noreferrer">Documentação Oficial PHP - Variables</a></li>
<li><a href="https://www.php.net/manual/en/language.types.php" target="_blank" rel="noopener noreferrer">Documentação Oficial PHP - Types</a></li>
<li><a href="https://www.php.net/manual/en/language.operators.php" target="_blank" rel="noopener noreferrer">Documentação Oficial PHP - Operators</a></li>
<li><a href="https://phptherightway.com/" target="_blank" rel="noopener noreferrer">PHP: The Right Way - Tipo de Dados e Variáveis</a></li>
<li><a href="https://www.oreilly.com/library/view/clean-code-in/9781492050544/" target="_blank" rel="noopener noreferrer">Clean Code in PHP - Boas Práticas</a></li>
</ul>