ESSE PROJETO É APENAS PARA APLICAÇÃO DE CONCEITO E APRENDIZADO, NÃO É PARA SER USADO EM PRODUÇÃO, PELO MENOS NÃO AINDA
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.
Via Composer
$ composer require andresmeireles/respectannotation
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)
Para usar os validadores optional & not são nescessários criar chaves com suas respectivas regras.
<?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;
}
}
<?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.
$ composer test
- 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"))
TBD
The MIT License (MIT). Please see License File for more information.