Validação de dados em PHP: das funções nativas às bibliotecas profissionais
A validação de dados é um dos pilares fundamentais de uma aplicação web segura e estável. Em PHP, existem diversas abordagens: desde funções nativas simples até bibliotecas poderosas que implementam o padrão "Cadeia de Responsabilidade" (Chain of Responsibility) e suportam cenários complexos de verificação. Neste artigo, analisaremos três ferramentas populares para validação em PHP: Respect\\Validation, Symfony Validator e Aura.Filter, além de relembrarmos os recursos nativos da linguagem.
1. Funções nativas do PHP
Antes de adicionar bibliotecas de terceiros, vale lembrar que o PHP oferece ferramentas básicas para filtragem e verificação de dados:
filter_var()— verificação e limpeza de dados por filtros (email, URL, integer, etc.)preg_match()— verificação por expressões regularesempty(),is_numeric(),strlen()— verificações simplesctype_alpha(),ctype_digit()— verificação de conjuntos de caracteres
Exemplo de uso do filter_var:
<?php$email = "user@example.com";if (filter_var($email, FILTER_VALIDATE_EMAIL)) { echo "Email válido";} else { echo "Email inválido";}?>2. Respect\\Validation
Respect\\Validation é uma das bibliotecas de validação mais populares em PHP. Sua principal vantagem é a sintaxe encadeada e legível (fluent interface) e uma enorme quantidade de regras prontas (mais de 100).
Instalação
composer require respect/validationExemplo de uso
<?phpuse Respect\\Validation\\Validator as v;
$user = [ 'name' => 'João', 'email' => 'joao@teste.com', 'age' => 25, 'website' => 'https://exemplo.com'];
$validator = v::key('name', v::stringType()->length(2, 50)) ->key('email', v::email()) ->key('age', v::intType()->between(18, 120)) ->key('website', v::optional(v::url()));
try { $validator->assert($user); echo "Dados válidos!";} catch (\\Respect\\Validation\\Exceptions\\NestedValidationException $e) { print_r($e->getMessages());}?>A biblioteca suporta mensagens de erro personalizadas, validação aninhada de arrays e permite combinar regras através de allOf(), oneOf() e noneOf().
3. Symfony Validator
O componente Symfony Validator faz parte do ecossistema Symfony, mas pode ser usado separadamente. É um padrão industrial para validação de estruturas de dados complexas com suporte a anotações, configurações XML e YAML.
Instalação
composer require symfony/validatorExemplo com uso de atributos (PHP 8+)
<?phpuse Symfony\\Component\\Validator\\Validation;use Symfony\\Component\\Validator\\Constraints as Assert;
class User{ #[Assert\\NotBlank] #[Assert\\Length(min: 2, max: 50)] public string $name;
#[Assert\\NotBlank] #[Assert\\Email] public string $email;
#[Assert\\NotBlank] #[Assert\\Positive] #[Assert\\LessThan(150)] public int $age;}
$user = new User();$user->name = 'João';$user->email = 'joao@teste.com';$user->age = 25;
$validator = Validation::createValidatorBuilder() ->enableAttributeMapping() ->getValidator();
$violations = $validator->validate($user);
if (count($violations) === 0) { echo "Validação aprovada!";} else { foreach ($violations as $violation) { echo $violation->getPropertyPath() . ': ' . $violation->getMessage() . ""; }}?>O Symfony Validator suporta grupos de validação, verificação em cascata e
Também na biblioteca
Redis (ioredis) para JavaScript (Node.js): guia completo com exemplos
Criptografia em Java: criptografia e hash de dados
PHPUnit para PHP: guia completo com exemplos