andresmeireles/respectannotation

use validations of Respect Validation as annotations in doctrine entities

2.0 2024-04-11 14:15 UTC

This package is auto-updated.

Last update: 2024-04-11 14:19:46 UTC


README

RESPECT ANNOTATIONS

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

Lendo o Developer Roadmap um dos passos dizia que uma boa forma de aprender é criar e distribuir um pacote em algum repositorio de pacotes da liguagem que você está aprendendo, mas como nunca achei que tivesse algo bom o suficiente para disponibilizar. Então em um dos projetos em que trabalho houve a demanda de usar os validadores do Respect em entidades do Doctrine, após fazer isso pareceu uma boa ideia disponibilizar isso como pacote.

Install

Via Composer

$ composer require andresmeireles/respectannotation

Usage

Nas entidades com propriedades publicas:

<?php declare(strict_types = 1);

[..]
use Andresmeireles\RespectAnnotation\ValidationAnnotation as Respect;

class EntityX
{
    /**
    * @Respect(rules={"noBlank"})
    * Outras anotações do DOCTRINE
    */
    public $name
}

Nas entidades com propriedades private ou protected. É nescessário um getter para obter o valor da variavel para a validação:

<?php declare(strict_types = 1);

[..]
use Andresmeireles\RespectAnnotation\ValidationAnnotation as Respect;

class EntityX
{
    /**
    * @Respect(rules={"noBlank"})
    * Outras anotações do DOCTRINE
    */
    private $name

    public getName()
    {
        return $this->name;
    }
}

Ja tendo as anotações em seus devidos lugares, para validar e retornar erros crie uma instancia de RespectValidationAnnotation e como parametro envie um objeto que contenha anotaçoes validas.

    $entity = new EntityX();
    $entity->setName('andre');
    $validator = new RespectValidationAnnotation()
    $validator->executeClassValidation($entity)

Optional & Not Validators

Para usar os validadores optional & not são nescessários criar chaves com suas respectivas regras.

Optival parameter

<?php declare(strict_types = 1);

[..]
use Andresmeireles\RespectAnnotation\ValidationAnnotation as Respect;

class EntityX
{
    /**
    * @Respect(optrules={"noWhitespace"})
    * Outras anotações do DOCTRINE
    */
    private $name

    public getName()
    {
        return $this->name;
    }
}

Not parameter

<?php declare(strict_types = 1);

[..]
use Andresmeireles\RespectAnnotation\ValidationAnnotation as Respect;

class EntityX
{
    /**
    * @Respect(notrules={"noWhitespace"})
    * Outras anotações do DOCTRINE
    */
    private $name

    public getName()
    {
        return $this->name;
    }
}

O processo de validar as entidades continua o mesmo.

Testing

$ composer test

Limitações

  • Ainda não é possivel utilizar alguns tipos de validadores mais complexos como sf ou zend.
  • Não é possivel usar os validadores optional e not em conunto na mesma chave. i.e not(optional("noWhitespace"))

Contributing

TBD

Code of Conduct

Code of conduct.

License

The MIT License (MIT). Please see License File for more information.