Validação de dados em PHP: Guia completo sobre ferramentas e bibliotecas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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 regulares
  • empty(), is_numeric(), strlen() — verificações simples
  • ctype_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/validation

Exemplo 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/validator

Exemplo 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

Recommendations