DEV Community

Cledilson Nascimento
Cledilson Nascimento

Posted on • Updated on

Validando dados no PHP com Lontra Validator

Apesar do Zend não estar mais tão popular nos últimos anos, principalmente depois que foi para as mãos da Linux Fundation, agora chamado de Laminas, eu continuo trabalhando com ele, pois ao meu ver é um framework muito sólido e versátil, fácil de identificar erros durante o desenvolvimento e baixo acoplamento.

O Laminas é (conforme o significado literal do nome) dividido em pequenas partes, cada coisa tem seu pacote, como forms, banco de dados, MVC, validadores, filtros, etc.

Pra ser mais direto ao assunto do artigo, muitas vezes precisei de algumas validações que não estavam prontas e disponíveis no pacote laminas-validator, então resolvi desenvolver alguns:

ArrayRecordExists - Check if values in array exists on database
DateBetween - Checks whether the date is between values entered.
DateGreaterThan - Checks if date is greater
DateLessThan - Checks if date is less
EndsWith - If text ends with a value
IsArray - If value is a valid array
Password - Checks whether the entered value is a valid password with the options uppercase, lowercase, number, special characters.
StartsWith - If text starts with a value
WordCount - Validate the number of words in a string

Essas validações foram feitas para serem integradas ao laminas-validator e laminas-inputfilter, mas funcionam também para abordagens Orientadas a Objetos em projetos em PHP puro ou em outros frameworks, apesar de não achar tão interessante nesses casos, mas espero que também te ajude.

A instalação via Composer é bem simples:

composer require cledilsonweb/lontra-validator
Enter fullscreen mode Exit fullscreen mode

Pra usar também é bem simples:

$inputFilter->add(
    [
        'name' => 'input_name',
        'required' => true,
        'filters' => // your filters...,
        'validators' => [
            [
                'name' => DateBetween::class
                'options' => [
                    'max' => '2020-10-10', 
                    'min' => '2020-05-05', 
                    'format' => 'Y-m-d', 
                    'inclusive' => true
                ]
            ]
        ]
    ]
);
Enter fullscreen mode Exit fullscreen mode

Ou em casos em que você não use o Laminas como framework no seu projeto:

$validator = new DateBetween([
    'max' => '2020-10-10', 
    'min' => '2020-05-05', 
    'format' => 'Y-m-d', 
    'inclusive' => true
]);
echo $validator->isValid('2020-06-06'); //true
Enter fullscreen mode Exit fullscreen mode

Conheça o Laminas, agora na Linux Fundation

Como eu disse, você pode usar apenas partes do Laminas em seu projeto em combinação com outros frameworks também. Inclusive o InputFilter que é usado para validar dados, principalmente de formulários:

https://docs.laminas.dev/laminas-inputfilter/intro/

Então...

Tem sido uma mão na roda em meus projetos, tanto na empresa como em projetos pessoais, e espero que ajude você também. Caso tenha sugestões, pode enviar pelo projeto no Github ou dúvidas por aqui mesmo. Abraço!

Link do projeto:

https://github.com/cledilsonweb/lontra-validator

Top comments (0)