Fala, pessoal! Tudo bem?
Primeiramente gostaria de desejar um feliz ano novo a vocês e que esse ano seja de muita saúde e sucesso para todos.
Estamos de volta para trazer coisas interessantes para vocês, devs. E, para começar com o pé direito, é sempre legal quando trago projetos de brasileiros aqui nos artigos. Esse projeto em especial vai ajudar muita gente.
Nesta semana foi levantado no Slack do PHPSP, pelo Gabriel Caruso, o que o pessoal estava usando para validar CNPJ, CPF, etc. E eis que o Marcel Santos responde com um projeto muito da hora, comandado pelo Antonio Spinelli.
O projeto, chamado Brazanation Documents, permite que validemos números de CNPJ, CPF, NFe, CNH, I.E., etc, e em breve talvez valide até a carteirinha de estudante.
Vamos ver como ele funciona!
Primeiro vamos criar uma pasta documentos e faremos o composer require:
composer require brazanation/documents 2.0.*
Vamos ao código para testar como as coisas funcionam: documents.php
(observe que os PHP_EOL são apenas para pular linha no console).
<?php
require_once 'vendor/autoload.php';
use Brazanation\Documents\Cpf; //utilizando a classe para validar CPF
use Brazanation\Documents\Cnpj; //utilizando a classe para validar CNPJ
use Brazanation\Documents\Cnh; //utilizando a classe para validar CNH
use Brazanation\Documents\StateRegistration; //utilizando a classe para validar IE
use Brazanation\Documents\Cns; //utilizando a classe para validar Cartão do SUS
use Brazanation\Documents\Renavam; //utilizando a classe para validar Renavam
use Brazanation\Documents\Exception\InvalidDocument as InvalidDocumentException;
//validando um CPF
//CPF Válido
try {
$document = new Cpf('81219418900');
echo $document . PHP_EOL; // printa o número documento sem formatação: 06843273173
echo $document->format() . PHP_EOL; // printa o número do documento com formatação: 068.432.731-73
} catch (InvalidDocumentException $e) {
echo $e->getMessage() . PHP_EOL; //retorna a excessão de validação
}
//CPF Inválido
try {
$document = new Cpf('81219418901');
echo $document . PHP_EOL; // printa o número documento sem formatação: 06843273173
echo $document->format() . PHP_EOL; // printa o número do documento com formatação: 068.432.731-73
} catch (InvalidDocumentException $e) {
echo $e->getMessage() . PHP_EOL; //retorna a excessão de validação
}
//Para os demais documentos é similar...
//CPNJ
try {
$document = new Cnpj('12077188000155');
echo $document . PHP_EOL; // printa o número documento sem formatação: 06843273173
echo $document->format() . PHP_EOL; // printa o número do documento com formatação: 068.432.731-73
} catch (InvalidDocumentException $e) {
echo $e->getMessage() . PHP_EOL; //retorna a excessão de validação
}
//CNH
try {
$document = new Cnh('05120241700');
echo $document . PHP_EOL; // printa o número documento sem formatação: 06843273173
echo $document->format() . PHP_EOL; // printa o número do documento com formatação: 068.432.731-73
} catch (InvalidDocumentException $e) {
echo $e->getMessage() . PHP_EOL; //retorna a excessão de validação
}
//IE da Bahia
try {
$document = StateRegistration::BA('20933364');
echo $document . PHP_EOL; // printa o número documento sem formatação: 06843273173
echo $document->format() . PHP_EOL; // printa o número do documento com formatação: 068.432.731-73
} catch (InvalidDocumentException $e) {
echo $e->getMessage() . PHP_EOL; //retorna a excessão de validação
}
//IE da Bahia inválido
try {
$document = StateRegistration::BA('20933363');
echo $document . PHP_EOL; // printa o número documento sem formatação: 06843273173
echo $document->format() . PHP_EOL; // printa o número do documento com formatação: 068.432.731-73
} catch (InvalidDocumentException $e) {
echo $e->getMessage() . PHP_EOL; //retorna a excessão de validação
}
//RENAVAM
try {
$document = new Renavam('63250122870');
echo $document . PHP_EOL; // printa o número documento sem formatação: 06843273173
echo $document->format() . PHP_EOL; // printa o número do documento com formatação: 068.432.731-73
} catch (InvalidDocumentException $e) {
echo $e->getMessage() . PHP_EOL; //retorna a excessão de validação
}
E executando, teremos:
Espero que esse projeto magnífico da comunidade brasileira possa ajudar na validação dos documentos durante a implementação dos projetos.
Um grande abraço e até a próxima, galera!