andresmeireles / respectannotation
use validations of Respect Validation as annotations in doctrine entities
Requires
- php: ^8.1
- doctrine/annotations: ^1.6
- respect/validation: ^1.1
Requires (Dev)
- phpunit/phpunit: ^11.1
- squizlabs/php_codesniffer: ^3
README
RESPECT ANNOTATIONS
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
License
The MIT License (MIT). Please see License File for more information.