bonuscred / data-validator
Library for data validation and data grouping
Requires
- php: >=8.0
README
Biblioteca para validadação de dados.
Instalação
Para instalar esta dependência através do Composer.
composer require bonuscred/data-validator
Utilização
$data = [ 'field_cnpj' => '81.287.353/0001-16', 'field_cpf' => '124.784.370-07', 'field_int' => 123, 'field_string' => 'minhastring', 'field_date' => '2024-01-01 00:00:00' ]; $validator = new DataValidator\Validator; $validator->cnpj('field_cnpj'); $validator->cpf('field_cpf'); $validator->integer('field_int'); $validator->string('field_string'); $validator->date('field_date', 'Y-m-d H:i:s'); $validator->validate($data); //true
Validação direta de atributo
DataValidator\Field\Region\Cpf::isValid('124.784.370-07'); //true DataValidator\Field\Array\Enum::isValid('a', ['b', 'c']); //false
Tratando Exceções
O comportamento padrão do DataValidator\Validator é disparar uma exceção após encontrar uma dado inválido, é possível evitar esse comportamento e receber como retorno uma valor boleano da validação.
//Evita disparo de Exception DataValidator\Error::throw(false); $data = [ 'field_cpf' => 'not-a-cpf' 'field_date' => 'not-a-date' ]; $validator = new DataValidator\Validator; $validator->cpf('field_cpf'); $validator->date('field_date'); if(!$validator->validate($data)){ $errors = $validator->getErrors(); //Array contendo todos os erros de validação echo $validator->getLastError()->field; //field_date echo ': '; echo $validator->getLastError()->message; //Mensagem de data inválida }
Concatenação de métodos
É possivel concatenar todos os métodos de validação do DataValidator\Validator.
(new DataValidator\Validator)->cnpj('field_cnpj') ->cpf('field_cpf') ->integer('field_int') ->string('field_string') ->date('field_date', 'Y-m-d H:i:s') ->validate($data);
Estruturas complexas
DataValidator é capaz de validar estruturas complexas de dados através do componente DataValidator\Field\Array\Multidimensional.
O segundo parâmetro recebido é um boleano que informa se a estrutura se refere a um array identado simples ou um array de objetos ("Array de arrays").
Ele trabalha de forma recursiva, portanto é possivel passar componentes multidimensionais dentro de outro componente multidimensional, criando uma estrutura complexa e não linear de dados.
$data = [ 'field_int' => 123, 'complex' => [ 'a' => 'not-empty', 'b' => [ 'ba' => 1, 'bb' => 'is-string', ], 'c' => [ [ 'ca' => 1, 'cb' => 'cb_a' ], [ 'ca' => 2, 'cb' => 'cb_b' ] ] ] ]; $validator = new DataValidator\Validator; $validator->integer('field_int') ->multidimensional('complex', [ 'a' => new DataValidator\Field\Calculation\NotEmpty, 'b' => [ 'ba' => new DataValidator\Field\Type\Integer, 'bb' => new DataValidator\Field\Type\Stringval ], 'c' => new DataValidator\Field\Array\Multidimensional([ 'ca' => new DataValidator\Field\Type\Integer, 'cb' => new DataValidator\Field\Array\Enum(['cb_a', 'cb_b']) ], true) ]); $validator->validate($data); //true
Validações condicionais
É possivel passar validações condicionais, onde uma validação só será considerada se outra validação for correspondida.
$validator->integer('field_int') ->addConditional( 'field_int', new DataValidator\Field\Calculation\Equal(123), 'field_condicional', new DataValidator\Field\Calculation\NotEmpty ); $validator->validate(['field_int' => 321]); //true $validator->validate(['field_int' => 123]); //false
Componentes validadores
Negação
É possível obter uma validação de negação através do prefixo "not_". Nesse caso se o campo tiver uma validação verdadeira, será revertida como falsa.
$validator->integer('field_int')->validate(['field_int' => 123]); //true $validator->not_integer('field_int')->validate(['field_int' => 123]); //false
Tradução
Atualmente o componente fornece mensagens de erro nos idiomas português(pt-br) e inglês(en), tendo como padrão o pt-br, podendo ser alterado de acordo com o desejado.
DataValidator\Lang\Translator::set('en');
Requisitos
- PHP 8.0 ou superior