Principais erros de desenvolvedores PHP iniciantes — parte 4: Trabalhando com dados
Continuamos a série de artigos para aqueles que estão estudando PHP e desejam escrever código de maior qualidade. Nesta parte, abordaremos três erros críticos relacionados ao processamento de dados do usuário, cache e tipagem estrita. Se você está na fase de aprendizado de PHP, estes exemplos ajudarão a evitar problemas típicos em projetos reais.
1. Confiar em dados de arrays superglobais
Um dos erros mais comuns para desenvolvedores PHP iniciantes é usar dados de $_GET, $_POST ou $_REQUEST sem validação e filtragem. Este é um caminho direto para ataques XSS e injeções SQL.
Abordagem incorreta
<?php// Perigoso! O usuário pode enviar um script$name = $_POST['username'];echo "Olá, $name!";?>Abordagem correta
<?php// Usamos filtragem e escape$name = htmlspecialchars(strip_tags(trim($_POST['username'] ?? '')), ENT_QUOTES, 'UTF-8');echo "Olá, " . $name . "!";?>O que fazer? Sempre processe os dados de entrada. Para trabalhar com banco de dados, use prepared statements (PDO ou MySQLi), e para saída, use htmlspecialchars(). Esta é a base da segurança em programação em PHP.
2. Ausência de cache para consultas pesadas
Muitos iniciantes executam a mesma consulta SQL ou cálculo complexo a cada atualização de página. Isso prejudica o desempenho, especialmente quando há muitas consultas.
Exemplo do problema
<?php// Consultamos dados do banco a cada vez$users = $db->query("SELECT * FROM users WHERE active = 1")->fetchAll();foreach ($users as $user) { echo $user['name'];}?>Solução com cache
<?php// Usamos cache simples em arquivo$cacheFile = 'cache/users_active.cache';$cacheTime = 300; // 5 minutos
if (file_exists($cacheFile) && (time() - filemtime($cacheFile)) < $cacheTime) { $users = unserialize(file_get_contents($cacheFile));} else { $users = $db->query("SELECT * FROM users WHERE active = 1")->fetchAll(); file_put_contents($cacheFile, serialize($users));}
foreach ($users as $user) { echo $user['name'];}?>Para projetos mais complexos, use Memcached ou Redis. Isso acelerará o aprendizado de PHP em termos de compreensão da arquitetura de aplicações de alta carga.
3. Ignorar a tipagem estrita
PHP é uma linguagem com tipagem dinâmica, mas desde a versão 7.0 é possível ativar o modo estrito. Iniciantes frequentemente esquecem disso, o que leva a erros inesperados.
Situação típica
<?phpfunction calculateSum($a, $b) { return $a + $b;}
echo calculateSum(10, '5'); // Resultado: 15 (string foi convertida para número)?>Correção
<?phpdeclare(strict_types=1); // Ativamos o modo estrito
function calculateSum(int $a, int $b): int { return $a + $b;}
// echo calculateSum(10, '5'); // Fatal error: Uncaught TypeErrorecho calculateSum(10, 5); // 15?>A tipagem estrita ajuda a detectar erros na fase de desenvolvimento, não em produção. Recomendamos a todos PHP para iniciantes que se acostumem desde já a especificar tipos de argumentos e valores de retorno.
Bônus: trabalhar com sessões sem verificação
Outro erro frequente é gravar na sessão sem verificar a existência da chave. Isso pode gerar avisos.
<?phpsession_start();
// Erro: se a chave não existir, receberemos um aviso$_SESSION['counter'] = $_SESSION['counter'] + 1;
// Correto$_SESSION['counter'] = ($_SESSION['counter'] ?? 0) + 1;?>