SlideShare uma empresa Scribd logo
RespectValidation
O mais incrível mecanismo de validação já criado para PHP
Sobre
• Biblioteca de validação criada por Alexandre Gaigalas (Alganet)
• PHP 5.3+ e HHVM 3.3+
• Interface fluente
• Mais de 100 regras de validação
• Mais de 175 mil instalações via Composer
• Média de 13 mil instalações por mês via Composer
Exemplo
• Obter dados via $_POST
• Validar se a chave “email” é um email válido
• Exibir mensagem de erro
Validator - Zend
use ZendInputFilterInput;
use ZendInputFilterInputFilter;
use ZendValidatorEmailAddress;
$email = new Input('email');
$email->getValidatorChain()
->attach(new EmailAddress());
$inputFilter = new InputFilter();
$inputFilter->add($email)
->setData($_POST);
if (!$inputFilter->isValid()) {
foreach ($inputFilter->getMessages() as $messages) {
echo current($messages);
break;
}
}
Validation - Illuminate
use IlluminateValidationFactory;
use SymfonyComponentTranslationTranslator;
$factory = new Factory(new Translator('en'));
$validator = $factory->make(
$_POST,
array('email' => 'required|email')
);
if ($validator->fails()) {
echo $validator->messages()->first();
}
Validator - Symfony
use SymfonyComponentValidatorValidation;
use SymfonyComponentValidatorConstraints as Assert;
$constraint = new AssertCollection(array(
'email' => new AssertEmail(),
));
$validator = Validation::createValidator();
$violations = $validator->validateValue($_POST, $constraint);
if (count($violations) > 0) {
echo $violations;
}
Validation - Respect
use RespectValidationValidator as v;
try {
v::key('email', v::email())->check($_POST);
} catch (Exception $exception) {
echo $exception->getMessage();
}
Validando
Método validate()
if (!v::email()->validate($input)) {
// ...
}
Método check()
try {
v::stringType()->length(2, 15)->check(0);
} catch (Exception $exception) {
echo $exception->getMessage();
}
// Resultado:
//
// 0 must be a string
Método check()
try {
v::stringType()->length(2, 15)->check('A');
} catch (Exception $exception) {
echo $exception->getMessage();
}
// Resultado:
//
// "A" must have a length between 2 and 15
Método assert()
try {
v::stringType()->length(2, 15)->assert(0);
} catch (NestedValidationExceptionInterface $exception) {
echo $exception->getFullMessage();
}
// Resultado:
//
// -All of the required rules must pass for 0
// |-0 must be a string
// -0 must have a length between 2 and 15
E se eu quiser…
Não utilizar estáticos
use RespectValidationRules;
use RespectValidationValidator;
$validator = new Validator();
$validator->addRule(new RulesKey('email', new RulesEmail()));
$validator->assert($_POST);
Reutilizar cadeia de validação
$validator = v::stringType()->length(2, 15);
$validator->assert($input1);
$validator->assert($input2);
$validator->check($input3);
if ($validator->validate($input4)) {
// ...
}
Obter as mensagens em formato
de array
try {
v::stringType()->length(2, 15)->assert(0);
} catch (NestedValidationExceptionInterface $exception) {
print_r($exception->getMessages());
}
// Resultado:
//
// Array
// (
// [0] => 0 must be a string
// [1] => 0 must have a length between 2 and 15
// )
Traduzir mensagens
try {
v::stringType()->length(2, 15)->check(0);
} catch (Exception $exception) {
$exception->setParam('translator', 'gettext');
// ...
}
Customizar mensagens1
try {
v::stringType()->length(2, 15)->assert(0);
} catch (NestedValidationExceptionInterface $exception) {
$messages = $exception->findMessages(array(
'stringType' => 'Valor precisa ser uma string',
'length' => 'Valor precisa conter de 2 a 15 caracteres',
));
print_r($messages);
}
// Resultado:
//
// Array
// (
// [stringType] => Valor precisa ser uma string
// [length] => Valor precisa conter de 2 a 15 caracteres
// )
Customizar mensagens2
try {
v::key('email', v::email())->assert(0);
} catch (NestedValidationExceptionInterface $exception) {
$messages = $exception->findMessages(array(
'email' => ‘Você precisa fornecer um email válido'
));
print_r($messages);
}
// Resultado:
//
// Array
// (
// [email] => Você precisa fornecer um email válido
// )
Utilizar minhas próprias regras
v::with('MyValidationRules');
v::myRule(); // Tenta carregar "MyValidationRulesMyRule" se existir
Trabalhar com valores opcionais
v::optional(v::email())->validate(''); // true
v::optional(v::email())->validate(null); // true
Inverter uma regra
v::not(v::equals('foo'))->validate('bar'); //true
v::not(v::equals('foo'))->validate('foo'); //false
Obrigado

Mais conteúdo relacionado

PDF
Criando APIs usando o micro-framework Respect
KEY
PHPubSP Object Calisthenics aplicado ao PHP
PDF
Aula 02 - Introdução ao PHP - Programação Web
PDF
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
PDF
PHP para Adultos: Clean Code e Object Calisthenics
PPTX
PDF
Rest Beer v2
PDF
Object Calisthenics: relaxe e escreva códigos simples
Criando APIs usando o micro-framework Respect
PHPubSP Object Calisthenics aplicado ao PHP
Aula 02 - Introdução ao PHP - Programação Web
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
PHP para Adultos: Clean Code e Object Calisthenics
Rest Beer v2
Object Calisthenics: relaxe e escreva códigos simples

Mais procurados (20)

PDF
PHP ao Extremo
PDF
Proxy, Man-In-The-Middle e testes
PDF
Java script aula 05 - funções
PDF
PHP Experience 2016 - [Palestra] Keynote: PHP-7
PDF
Nossa experiência com TDD
PDF
Java script aula 08 - formulários
PDF
Minicurso de jQuery
PDF
Introdução à JQuery
PPTX
Design patterns
PDF
Aula 12 Relatório - Tabelas
PPT
Apresentacao TCC - Rafael Felix
PDF
Da Argila Ao Forte - Como desenvolver uma loja virtual
PDF
LabMM4 (T16 - 12/13) - PHP + MySQL
PDF
modernizando a arquitertura de sua aplicação
PDF
Java script - funções
PPTX
Comtec 2012 - C# Async
ODP
Orientação a Objetos em PHP
PDF
PHP MySQL Aula 03
PDF
Temario coreldraw
PHP ao Extremo
Proxy, Man-In-The-Middle e testes
Java script aula 05 - funções
PHP Experience 2016 - [Palestra] Keynote: PHP-7
Nossa experiência com TDD
Java script aula 08 - formulários
Minicurso de jQuery
Introdução à JQuery
Design patterns
Aula 12 Relatório - Tabelas
Apresentacao TCC - Rafael Felix
Da Argila Ao Forte - Como desenvolver uma loja virtual
LabMM4 (T16 - 12/13) - PHP + MySQL
modernizando a arquitertura de sua aplicação
Java script - funções
Comtec 2012 - C# Async
Orientação a Objetos em PHP
PHP MySQL Aula 03
Temario coreldraw
Anúncio

Destaque (20)

PDF
TestFest - Respect\Validation 1.0
PDF
O esquecido do PHP
PDF
Product portfolio 2013
PDF
María montessori. la formacion del hombre
RTF
Organizimi i procedurave
RTF
Organet drejtuese te parlamentit
PDF
PDF
OTCBB: AHRO - Initiation of Coverage Dec. 7 2011
PPTX
Roel Spits, Poseidon
PDF
AVReporter Phoenix Contact Wages Plc
PDF
Product portfolio 2012
PDF
Play Media Talk - Invitation to Speak
PPT
Lima Peru
PPT
The Industry
PPSX
Aşkcccc
DOC
Si duhet ta shikojme/studjojme rrealisht nje statistike ne fushen e transportit
PPT
Double page spread analysis (main task)
PDF
Startup Ingredients (Team, Solving a Problem, Customers)
PDF
VTUS Feb 2012 bio presentation
PPTX
GE Excite II For Sale
TestFest - Respect\Validation 1.0
O esquecido do PHP
Product portfolio 2013
María montessori. la formacion del hombre
Organizimi i procedurave
Organet drejtuese te parlamentit
OTCBB: AHRO - Initiation of Coverage Dec. 7 2011
Roel Spits, Poseidon
AVReporter Phoenix Contact Wages Plc
Product portfolio 2012
Play Media Talk - Invitation to Speak
Lima Peru
The Industry
Aşkcccc
Si duhet ta shikojme/studjojme rrealisht nje statistike ne fushen e transportit
Double page spread analysis (main task)
Startup Ingredients (Team, Solving a Problem, Customers)
VTUS Feb 2012 bio presentation
GE Excite II For Sale
Anúncio

Último (6)

PDF
Dos requisitos ao código: como criar código rastreável em PHP
PDF
apresentacao introducao computacao ead.pdf
DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
PPTX
Curso de Windows 11 resumido na prática.pptx
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
PDF
Evolução em código: algoritmos genéticos com PHP
Dos requisitos ao código: como criar código rastreável em PHP
apresentacao introducao computacao ead.pdf
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
Curso de Windows 11 resumido na prática.pptx
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
Evolução em código: algoritmos genéticos com PHP

Introdução ao Respect\Validation (1.0)

  • 1. RespectValidation O mais incrível mecanismo de validação já criado para PHP
  • 2. Sobre • Biblioteca de validação criada por Alexandre Gaigalas (Alganet) • PHP 5.3+ e HHVM 3.3+ • Interface fluente • Mais de 100 regras de validação • Mais de 175 mil instalações via Composer • Média de 13 mil instalações por mês via Composer
  • 4. • Obter dados via $_POST • Validar se a chave “email” é um email válido • Exibir mensagem de erro
  • 5. Validator - Zend use ZendInputFilterInput; use ZendInputFilterInputFilter; use ZendValidatorEmailAddress; $email = new Input('email'); $email->getValidatorChain() ->attach(new EmailAddress()); $inputFilter = new InputFilter(); $inputFilter->add($email) ->setData($_POST); if (!$inputFilter->isValid()) { foreach ($inputFilter->getMessages() as $messages) { echo current($messages); break; } }
  • 6. Validation - Illuminate use IlluminateValidationFactory; use SymfonyComponentTranslationTranslator; $factory = new Factory(new Translator('en')); $validator = $factory->make( $_POST, array('email' => 'required|email') ); if ($validator->fails()) { echo $validator->messages()->first(); }
  • 7. Validator - Symfony use SymfonyComponentValidatorValidation; use SymfonyComponentValidatorConstraints as Assert; $constraint = new AssertCollection(array( 'email' => new AssertEmail(), )); $validator = Validation::createValidator(); $violations = $validator->validateValue($_POST, $constraint); if (count($violations) > 0) { echo $violations; }
  • 8. Validation - Respect use RespectValidationValidator as v; try { v::key('email', v::email())->check($_POST); } catch (Exception $exception) { echo $exception->getMessage(); }
  • 11. Método check() try { v::stringType()->length(2, 15)->check(0); } catch (Exception $exception) { echo $exception->getMessage(); } // Resultado: // // 0 must be a string
  • 12. Método check() try { v::stringType()->length(2, 15)->check('A'); } catch (Exception $exception) { echo $exception->getMessage(); } // Resultado: // // "A" must have a length between 2 and 15
  • 13. Método assert() try { v::stringType()->length(2, 15)->assert(0); } catch (NestedValidationExceptionInterface $exception) { echo $exception->getFullMessage(); } // Resultado: // // -All of the required rules must pass for 0 // |-0 must be a string // -0 must have a length between 2 and 15
  • 14. E se eu quiser…
  • 15. Não utilizar estáticos use RespectValidationRules; use RespectValidationValidator; $validator = new Validator(); $validator->addRule(new RulesKey('email', new RulesEmail())); $validator->assert($_POST);
  • 16. Reutilizar cadeia de validação $validator = v::stringType()->length(2, 15); $validator->assert($input1); $validator->assert($input2); $validator->check($input3); if ($validator->validate($input4)) { // ... }
  • 17. Obter as mensagens em formato de array try { v::stringType()->length(2, 15)->assert(0); } catch (NestedValidationExceptionInterface $exception) { print_r($exception->getMessages()); } // Resultado: // // Array // ( // [0] => 0 must be a string // [1] => 0 must have a length between 2 and 15 // )
  • 18. Traduzir mensagens try { v::stringType()->length(2, 15)->check(0); } catch (Exception $exception) { $exception->setParam('translator', 'gettext'); // ... }
  • 19. Customizar mensagens1 try { v::stringType()->length(2, 15)->assert(0); } catch (NestedValidationExceptionInterface $exception) { $messages = $exception->findMessages(array( 'stringType' => 'Valor precisa ser uma string', 'length' => 'Valor precisa conter de 2 a 15 caracteres', )); print_r($messages); } // Resultado: // // Array // ( // [stringType] => Valor precisa ser uma string // [length] => Valor precisa conter de 2 a 15 caracteres // )
  • 20. Customizar mensagens2 try { v::key('email', v::email())->assert(0); } catch (NestedValidationExceptionInterface $exception) { $messages = $exception->findMessages(array( 'email' => ‘Você precisa fornecer um email válido' )); print_r($messages); } // Resultado: // // Array // ( // [email] => Você precisa fornecer um email válido // )
  • 21. Utilizar minhas próprias regras v::with('MyValidationRules'); v::myRule(); // Tenta carregar "MyValidationRulesMyRule" se existir
  • 22. Trabalhar com valores opcionais v::optional(v::email())->validate(''); // true v::optional(v::email())->validate(null); // true
  • 23. Inverter uma regra v::not(v::equals('foo'))->validate('bar'); //true v::not(v::equals('foo'))->validate('foo'); //false