bonuscred/data-validator

Library for data validation and data grouping

v1.1.2 2024-07-05 00:11 UTC

This package is auto-updated.

Last update: 2024-09-05 00:42:28 UTC


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