pauloalmeidasilva / cpfcnpj-validation
Biblioteca para validação e geração de CPF e CNPJ (pt-BR).
Package info
github.com/pauloalmeidasilva/cpfcnpj-validation
pkg:composer/pauloalmeidasilva/cpfcnpj-validation
Requires
- php: ^8.0
Requires (Dev)
- phpunit/phpunit: ^9.5 || ^10.0
README
Biblioteca leve para validação, formatação e geração de CPF e CNPJ (pt-BR).
Recursos principais
- Validação de CPF e CNPJ via
Src\\Validator::validate(string): bool(aceita entradas com ou sem pontuação). - Geração de CPF e CNPJ via
Src\\Cpf::generate()eSrc\\Cnpj::generate(). - Formatação e sanitização via
Src\\Formatter. - Exemplos em
example/e testes comphpunitemtests/.
Requisitos
- PHP 8.0 ou superior
- Composer
Instalação (usando Composer)
composer require pauloalmeidasilva/cpfcnpj-validation
Ou, se estiver trabalhando com o repositório localmente:
composer install
Uso rápido
- Validar CPF/CNPJ (aceita pontuação ou não):
<?php require __DIR__ . '/vendor/autoload.php'; use Src\Validator; var_dump(Validator::validate('529.982.247-25')); // true var_dump(Validator::validate('04252011000110')); // true (CNPJ sem pontuação)
- Gerar e validar (ex.: CPF):
<?php require __DIR__ . '/vendor/autoload.php'; use Src\Cpf; use Src\Validator; $cpf = Cpf::generate(); // formatado por padrão $cpfRaw = Cpf::generate(false); // sem formatação (apenas dígitos) var_dump($cpf); var_dump(Validator::validate($cpfRaw));
- Formatar / sanitizar com
Formatter:
<?php require __DIR__ . '/vendor/autoload.php'; use Src\Formatter; echo Formatter::formatCpf('52998224725'); // 529.982.247-25 echo Formatter::formatCnpj('04252011000110'); // 04.252.011/0001-10 echo Formatter::sanitize('529.982.247-25'); // 52998224725 echo Formatter::autoFormat('04252011000110'); // 04.252.011/0001-10
Referência da API
As classes públicas principais estão no namespace Src.
-
Src\Validatorpublic static function validate(string $value): bool— valida CPF ou CNPJ, aceita entrada com pontuação ou não.
-
Src\Cpfpublic static function validate(string $cpf): bool— atalho paraValidator::validatepara CPFs.public static function generate(bool $formatting = true): string— gera um CPF válido; retorna formatado por padrão (xxx.xxx.xxx-xx) quando$formattingfortrue.- Observação: métodos internos para geração de dígitos verificadores e formatação também existem (
formate,DVGenerate), mas são privados/public estáticos conforme o uso.
-
Src\Cnpjpublic static function validate(string $cnpj): bool— atalho paraValidator::validatepara CNPJs.public static function generate(bool $formatting = true): string— gera um CNPJ válido; retorna formatado por padrão (xx.xxx.xxx/xxxx-xx) quando$formattingfortrue.
-
Src\Formatterpublic static function sanitize(string $value): string— remove todos os caracteres não numéricos.public static function formatCpf(string $cpf): string— formata CPF quando possível (11 dígitos), caso contrário retorna a entrada original.public static function formatCnpj(string $cnpj): string— formata CNPJ quando possível (14 dígitos), caso contrário retorna a entrada original.public static function autoFormat(string $value): string— escolhe CPF/CNPJ automaticamente com base no tamanho.public static function unformat(string $value): string— alias parasanitize.
Exemplos práticos
- Exemplo CLI para CPF (em
example/example_cpf_cli.php):
php example/example_cpf_cli.php
- Exemplo HTML (simples) em
example/example_cpf_html.phpeexample/example_cnpj_html.php.
Executando testes
Os testes usam phpunit (já incluído como dependência no vendor/ para este repositório).
./vendor/bin/phpunit --configuration phpunit.xml.dist
No Windows (se o binário estiver disponível em vendor/bin):
vendor\bin\phpunit.bat --configuration phpunit.xml.dist
Boas práticas
- Sempre sanitize entradas (use
Formatter::sanitize) quando armazenar ou comparar CPFs/CNPJs. - Para exibir ao usuário, utilize
Formatter::formatCpf/Formatter::formatCnpj. - Ao gerar dados para testes, use
Cpf::generate(false)/Cnpj::generate(false)para obter a forma sem pontuação.
Contribuindo
Pull requests são bem-vindos. Antes de enviar:
- Rode os testes com
phpunit. - Siga as convenções de codificação do projeto.
Licença
Consulte o arquivo de licença no repositório.