Download the PHP package silviosln/arbor-validator without Composer
On this page you can find all versions of the php package silviosln/arbor-validator. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download silviosln/arbor-validator
More information about silviosln/arbor-validator
Files in silviosln/arbor-validator
Package arbor-validator
Short Description Biblioteca de validação moderna para PHP 8.3+, agnóstica de framework, combinando a DX do Zod com DTOs tipados e Atributos nativos do PHP.
License MIT
Informations about the package arbor-validator
🌳 Arbor Validator
Disponível em: AGENTS.md
Arbor Validator é uma biblioteca de validação moderna para PHP 8.3+, agnóstica de framework e com zero dependências externas. Inspirada na Developer Experience (DX) do Zod (TypeScript) e nas capacidades nativas de tipagem, reflexão e atributos do PHP moderno.
Ela resolve simultaneamente quatro desafios essenciais no recebimento de dados:
- Validação Rigorosa: Regras estritas, incluindo validações brasileiras especializadas (algoritmo oficial de CPF e o novo padrão CNPJ Alfanumérico da Receita Federal).
- Validação Segura de Arquivos / Uploads: Validação real de arquivos (
$_FILES) checando tamanho, extensão e MIME type real (magic bytes) viafinfo_filepara impedir spoofing de extensões. - Coerção e Transformação: Coerção inteligente para formulários HTTP e pipelines de transformação com
.transform()e.preprocess(). - Mapeamento de Saída: Devolve dados 100% seguros e tipados, seja como um DTO (Classe Tipada) ou como um Array Sanitizado.
📦 Instalação
Requisitos
- PHP 8.3 ou superior (
declare(strict_types=1);, readonly classes, attributes) - Extensões nativas:
ext-mbstring,ext-json,ext-fileinfo - Zero dependências externas em produção.
🛠 As Duas Abordagens Nativas
O Arbor Validator suporta duas formas de validação compartilhando o mesmo motor interno de validação e coerção:
1. Class-First (DTOs com PHP 8 Attributes)
Ideal para payloads complexos, APIs REST com tipagem forte e Domain-Driven Design (DDD). A própria classe PHP é o contrato/schema.
2. Schema / Array Fluent (Estilo Zod)
Ideal para validações pontuais, formulários rápidos e rotas sem a necessidade de criar arquivos de classe DTO.
🇧🇷 Validações Especializadas Brasileiras
1. CPF (AV::string()->cpf() / #[V\Cpf])
- Validação oficial por algoritmo de dois dígitos verificadores (Módulo 11).
- Rejeita automaticamente sequências repetidas (
111.111.111-11,000.000.000-00, etc.). - Aceita dados com máscara (
123.456.789-00) ou sem máscara (12345678900). - Suporte nativo a
stripMask: truepara salvar apenas dígitos no banco.
2. Novo CNPJ Alfanumérico da Receita Federal (AV::string()->cnpj() / #[V\Cnpj])
- Totalmente compatível com o formato tradicional numérico (14 dígitos) e com a Normativa RFB nº 2.229/2024 (novo padrão alfanumérico).
- Posições 1 a 12 alfanuméricas (
0-9eA-Z) e posições 13 e 14 com dígitos verificadores numéricos. - Cálculo ponderado ASCII oficial (
ord(char) - 48) com Módulo 11. - Suporte a
allowAlphanumeric: falsecaso queira aceitar estritamente o formato legado numérico.
3. Telefone Brasileiro e Internacional (AV::string()->phone() / #[V\Phone])
- Valida celulares (11 dígitos com 9º dígito obrigatório
'9') e telefones fixos (10 dígitos com dígitos iniciais válidos2,3,4ou5). - Valida lista completa de DDDs oficiais do Brasil (evita DDDs inválidos como
00,01,20, etc.). - Suporte a formato internacional E.164 (
+5511999998888) e remoção automática de máscara (stripMask: true).
📁 Validação Real de Uploads ($_FILES)
Muitas bibliotecas confiam cegamente em $_FILES['avatar']['type'], que pode ser facilmente falsificado pelo cliente (ex: um script .php disfarçado de .jpg).
O Arbor Validator lê os bytes mágicos reais do arquivo no servidor através do finfo_file():
O arquivo validado pode ser manipulado através do objeto UploadedFile:
🧱 DTOs Aninhados e Listas de Itens (#[V\Nested], #[V\Each])
O Arbor Validator suporta estruturas complexas e listas aninhadas, mapeando erros hierárquicos em notação pontilhada (address.street, items.0.price):
🛡 Objeto ValidationResult (API First-Class)
⚡ Modo Seguro (safeParse) vs Exceção (parse)
Se preferir utilizar blocos try/catch em middlewares ou handlers de API:
🌐 Internacionalização e Idiomas (i18n)
Por padrão, todas as mensagens são exibidas em Português (pt-BR). Você pode alterar o idioma global para Inglês ou cadastrar novas mensagens customizadas:
🔌 Integração Nativa com Arbor Router
O Arbor Validator fornece a trait ValidatesRequestTrait, pronta para ser adicionada no objeto Request do Arbor Router (ou em qualquer aplicação):
🧪 Testes e Qualidade
O projeto conta com suíte de testes completa em PHPUnit 11 e análise estática avançada com PHPStan:
📄 Licença
Distribuído sob a licença MIT. Veja LICENSE para mais detalhes.
All versions of arbor-validator with dependencies
ext-fileinfo Version *
ext-mbstring Version *
ext-json Version *