Back-End

4 jan, 2019

Valide números de documentos em PHP com Brazanation Documents

Publicidade

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!