domine validação de dados em 45min
TRANSCRIPT
![Page 1: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/1.jpg)
30 de Novembro PHP Conference 2012 1
Domine
Validação de Dadosem 45min
![Page 2: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/2.jpg)
30 de Novembro PHP Conference 2012 2
Alexandre Gaigalashttp://about.me/alganet
![Page 3: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/3.jpg)
30 de Novembro PHP Conference 2012 3
@alganet
![Page 4: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/4.jpg)
30 de Novembro PHP Conference 2012 4
@alganet
Alfanumérico
![Page 5: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/5.jpg)
30 de Novembro PHP Conference 2012 5
@alganet
Alfanumérico Aceita _
![Page 6: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/6.jpg)
30 de Novembro PHP Conference 2012 6
@alganet
Alfanumérico Aceita _
Sem espaços
![Page 7: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/7.jpg)
30 de Novembro PHP Conference 2012 7
@alganet
Alfanumérico Aceita _
1-15 caracteresSem espaços
![Page 8: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/8.jpg)
30 de Novembro PHP Conference 2012 8
@alganet
Alfanumérico Aceita _
1-15 caracteresSem espaços
/^[[:alnum:]_]{1,15}$/(Expressão Regular)
![Page 9: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/9.jpg)
30 de Novembro PHP Conference 2012 9
@alexandre_gomes_gaigalas
Alfanumérico Aceita _
1-15 caracteresSem espaços
/^[[:alnum:]_]{1,15}$/
![Page 10: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/10.jpg)
30 de Novembro PHP Conference 2012 10
@al-ga-net
Alfanumérico Aceita _
1-15 caracteresSem espaços
/^[[:alnum:]_]{1,15}$/
![Page 11: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/11.jpg)
30 de Novembro PHP Conference 2012 11
@Alexandre Gomes
Alfanumérico Aceita _
1-15 caracteresSem espaços
/^[[:alnum:]_]{1,15}$/
![Page 12: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/12.jpg)
30 de Novembro PHP Conference 2012 12
E se eu quiser exibir os erros?
![Page 13: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/13.jpg)
30 de Novembro PHP Conference 2012 13
@alganet
Alfanumérico Aceita _
1-15 caracteresSem espaços
if (!ctype_alnum(str_replace('_', '', $username))) echo “Username pode conter apenas letras, números e _”;
![Page 14: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/14.jpg)
30 de Novembro PHP Conference 2012 14
@alganet
Alfanumérico Aceita _
1-15 caracteresSem espaços
if (!ctype_alnum(str_replace('_', '', $username))) echo “Username pode conter apenas letras, números e _”;if (strlen($username) < 1 || strlen($username) > 15) echo “Username pode conter de 1 a 15 caracteres”;
![Page 15: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/15.jpg)
30 de Novembro PHP Conference 2012 15
@alganet
Alfanumérico Aceita _
1-15 caracteresSem espaços
$e = array();if (!ctype_alnum(str_replace('_', '', $username))) $e[] = “Username pode conter apenas letras, números e _”;if (strlen($username) < 1 || strlen($username) > 15) $e[] = “Username pode conter de 1 a 15 caracteres”;if ($e) echo implode($e);
![Page 16: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/16.jpg)
30 de Novembro PHP Conference 2012 16
E o erro para o “Sem espaços”?
![Page 17: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/17.jpg)
30 de Novembro PHP Conference 2012 17
@alganet
Alfanumérico Aceita _
1-15 caracteresSem espaços
$e = array();if (!ctype_alnum(str_replace('_', '', $username))) $e[] = “Username pode conter apenas letras, números e _”;if (strlen($username) < 1 || strlen($username) > 15) $e[] = “Username pode conter de 1 a 15 caracteres”;if (false !== strpos($username, “ ”) $e[] = “Username não pode conter espaços”;/*...*/
![Page 18: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/18.jpg)
30 de Novembro PHP Conference 2012 18
Validation
![Page 19: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/19.jpg)
30 de Novembro PHP Conference 2012 19
use Respect\Validation\Rules as r;
$validator = new r\AllOf(
);
Construindo um Validator
![Page 20: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/20.jpg)
30 de Novembro PHP Conference 2012 20
use Respect\Validation\Rules as r;
$validator = new r\AllOf( new r\Alnum(“_”)
);
Construindo um Validator
![Page 21: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/21.jpg)
30 de Novembro PHP Conference 2012 21
use Respect\Validation\Rules as r;
$validator = new r\AllOf( new r\Alnum(“_”), new r\NoWhitespace );
Construindo um Validator
![Page 22: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/22.jpg)
30 de Novembro PHP Conference 2012 22
use Respect\Validation\Rules as r;
$validator = new r\AllOf( new r\Alnum(“_”), new r\NoWhitespace, new r\Length(1, 15));
Construindo um Validator
![Page 23: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/23.jpg)
30 de Novembro PHP Conference 2012 23
use Respect\Validation\Rules as r;
$validator = new r\AllOf( new r\Alnum(“_”), new r\NoWhitespace, new r\Length(1, 15));
$isOk = $validator->validate(“alganet”);
Construindo um Validator
![Page 24: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/24.jpg)
30 de Novembro PHP Conference 2012 24
Tem um jeito mais simples?
![Page 25: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/25.jpg)
30 de Novembro PHP Conference 2012 25
use Respect\Validation\Validator as v;
$validator = v::alnum('_') ->noWhitespace() ->length(1, 15);
$isOk = $validator->validate(“alganet”);
Construção via Fluent Builder
![Page 26: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/26.jpg)
30 de Novembro PHP Conference 2012 26
//true or false$validator->validate($algo);
![Page 27: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/27.jpg)
30 de Novembro PHP Conference 2012 27
E se eu quiser coletar os erros?
![Page 28: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/28.jpg)
30 de Novembro PHP Conference 2012 28
try { $validator->check(“e ae”);} catch (InvalidArgumentException $e) { echo $e->getMessage();}
![Page 29: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/29.jpg)
30 de Novembro PHP Conference 2012 29
use Respect\Validation\Exceptions as e;
/* … */
try { $validator->check(“e ae”);} catch (e\AlnumException $e) { //faz algo} catch (e\NoWhitespaceException $e) { //faz algo} catch (e\LengthException $e) { //faz algo}
![Page 30: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/30.jpg)
30 de Novembro PHP Conference 2012 30
//Dispara exception para o primeiro//erro$validator->check($algo);
![Page 31: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/31.jpg)
30 de Novembro PHP Conference 2012 31
E se eu quiser todos os erros?
![Page 32: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/32.jpg)
30 de Novembro PHP Conference 2012 32
try { $validator->assert(“e ae”);} catch (InvalidArgumentException $e) { echo $e->getFullMessage();}
![Page 33: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/33.jpg)
30 de Novembro PHP Conference 2012 33
\-All of the 3 required rules must pass |-"td errado#" must contain only letters (a-z) | and digits (0-9) |-"td errado#" must not contain whitespace \-"td errado#" must have a length between 1 and 15
$validator->assert(“td errado#”);
![Page 34: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/34.jpg)
30 de Novembro PHP Conference 2012 34
E se eu quiser agrupar só alguns erros?
![Page 35: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/35.jpg)
30 de Novembro PHP Conference 2012 35
try { $validator->assert(“e ae”);} catch (InvalidArgumentException $e) { $e->findMessages(array( 'alnum', 'length' ));}
![Page 36: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/36.jpg)
30 de Novembro PHP Conference 2012 36
E se eu quiser mensagens diferentes?
![Page 37: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/37.jpg)
30 de Novembro PHP Conference 2012 37
try { $validator->assert(“e ae”);} catch (InvalidArgumentException $e) { $e->findMessages(array( 'alnum' => “{{name}} Inválido”, 'length' => “Tamanho de {{name}} incorreto” ));}
![Page 38: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/38.jpg)
30 de Novembro PHP Conference 2012 38
//Dispara exception com todos os erros$validator->assert($algo);
![Page 39: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/39.jpg)
30 de Novembro PHP Conference 2012 39
E se eu quiser validar objetos inteiros?
![Page 40: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/40.jpg)
30 de Novembro PHP Conference 2012 40
class Tweet { public $text; public $created_at; public $user;}
class User{ public $name;}
![Page 41: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/41.jpg)
30 de Novembro PHP Conference 2012 41
$user = new User;$user->name = 'alganet';
$tweet = new Tweet;$tweet->user = $user;$tweet->text = “http://respect.li”; $tweet->created_at = new DateTime;
![Page 42: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/42.jpg)
30 de Novembro PHP Conference 2012 42
$tweetValidator = v::object() ->instance(“Tweet”) ->attribute(“text”, v::string()->length(1, 140)) ->attribute(“created_at”, v::date()) ->attribute(“user”, v::object() ->instance(“User”) ->attribute(“name”, $usernameValidator)) );
![Page 43: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/43.jpg)
30 de Novembro PHP Conference 2012 43
$tweetValidator = v::object() ->instance(“Tweet”) ->attribute(“text”, v::string()->length(1, 140)) ->attribute(“created_at”, v::date()) ->attribute(“user”, v::object() ->instance(“User”) ->attribute(“name”, $usernameValidator)) );
![Page 44: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/44.jpg)
30 de Novembro PHP Conference 2012 44
$tweetValidator = v::object() ->instance(“Tweet”) ->attribute(“text”, v::string()->length(1, 140)) ->attribute(“created_at”, v::date()) ->attribute(“user”, v::object() ->instance(“User”) ->attribute(“name”, $usernameValidator)) );
![Page 45: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/45.jpg)
30 de Novembro PHP Conference 2012 45
$tweetValidator = v::object() ->instance(“Tweet”) ->attribute(“text”, v::string()->length(1, 140)) ->attribute(“created_at”, v::date()) ->attribute(“user”, v::object() ->instance(“User”) ->attribute(“name”, $usernameValidator)) );
![Page 46: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/46.jpg)
30 de Novembro PHP Conference 2012 46
$tweetValidator = v::object() ->instance(“Tweet”) ->attribute(“text”, v::string()->length(1, 140)) ->attribute(“created_at”, v::date()) ->attribute(“user”, v::object() ->instance(“User”) ->attribute(“name”, $usernameValidator)) );
![Page 47: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/47.jpg)
30 de Novembro PHP Conference 2012 47
//Valida atributos de objetosv::object()->attribute(“name”);
//Valida chaves de arrayv::arr()->key(“email”);
![Page 48: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/48.jpg)
30 de Novembro PHP Conference 2012 48
//Valida atributos de objetosv::object()->attribute(“name”) //N atributos... ->attribute(“sex”);
//Valida chaves de arrayv::arr()->key(“email”) ->key(“sex”);
![Page 49: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/49.jpg)
30 de Novembro PHP Conference 2012 49
//Valida atributos de objetosv::object()->attribute(“name”) //N atributos... ->attribute(“sex”, //Valida o valor também v::in('F', 'M'));
//Valida chaves de arrayv::arr()->key(“email”) ->key(“sex”, v::in('F', 'M'));
![Page 50: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/50.jpg)
30 de Novembro PHP Conference 2012 50
E se eu quiser negar uma regra?
![Page 51: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/51.jpg)
30 de Novembro PHP Conference 2012 51
//Nega qualquer regrav::not(v::string());
![Page 52: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/52.jpg)
30 de Novembro PHP Conference 2012 52
E as mensagens pra regras negadas?
![Page 53: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/53.jpg)
30 de Novembro PHP Conference 2012 53
//”123” must be a stringv::string()->check(123);
//”bla bla” must not be a stringv::not(v::string())->check('bla bla');
![Page 54: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/54.jpg)
30 de Novembro PHP Conference 2012 54
Dá pra mudar o “123” e “bla bla” nas mensagens?
![Page 55: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/55.jpg)
30 de Novembro PHP Conference 2012 55
//Nome Completo must be a stringv::string() ->setName(“Nome Completo”) ->check(123);
//Idade must not be a stringv::not(v::string()) ->setName(“Idade”) ->check('bla bla');
![Page 56: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/56.jpg)
30 de Novembro PHP Conference 2012 56
//Validadores Básicos de Tipo
v::arr() v::date()v::float()v::int()v::nullValue()v::numeric()v::object()v::string()v::instance()
![Page 57: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/57.jpg)
30 de Novembro PHP Conference 2012 57
//Validadores Básicos de Comparação
v::equals($algo) // ==v::equals($algo, true) // ===v::max($a) // <v::max($a, true) // <=v::min($a) // >v::min($a, true) // >=v::between($a, $b) // >, <v::between($a, $b, true) // >=, <=
![Page 58: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/58.jpg)
30 de Novembro PHP Conference 2012 58
//Validadores Básicos Numéricos
v::even()v::odd()v::negative()v::positive()v::primeNumber()v::roman() // XVIv::multiple($algo)v::perfectSquare($algo)
![Page 59: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/59.jpg)
30 de Novembro PHP Conference 2012 59
//Validadores Básicos de String
v::alnum()v::alpha()v::digits()v::consonants()v::vowels()v::lowercase()v::uppercase()v::version()v::slug() // this-is-a-slugv::regex($exp)
![Page 60: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/60.jpg)
30 de Novembro PHP Conference 2012 60
//Validadores do Zendv::zend('Hostname')->check('google.com');
//Validadores do Symfonyv::sf('Time')->check('22:30:00');
![Page 61: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/61.jpg)
30 de Novembro PHP Conference 2012 61
//Validadores Legaisv::arr() ->each(v::instance(“MeuProduto”)) ->check($produtos); );
![Page 62: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/62.jpg)
30 de Novembro PHP Conference 2012 62
//Validadores Legais
v::between(1, 15) ->check(7);
v::between(“yesterday”, “tomorrow”) ->check(new DateTime);
![Page 63: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/63.jpg)
30 de Novembro PHP Conference 2012 63
//Validadores Legais
v::minimumAge(18) ->check(“1987-07-01”);
![Page 64: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/64.jpg)
30 de Novembro PHP Conference 2012 64
//Validadores Legais
v::leapDate() ->check(“1998-02-29”);
v::leapYear() ->check(“1998”);
![Page 65: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/65.jpg)
30 de Novembro PHP Conference 2012 65
//Validadores Legais
v::contains(“bar”) ->check(“foo bar baz”);
v::startsWith(“foo”) ->check(“foo bar baz”);
v::endsWith(“baz”) ->check(“foo bar baz”);
![Page 66: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/66.jpg)
30 de Novembro PHP Conference 2012 66
//Validadores Legais
v::contains(“bar”) ->check(array(“foo bar baz”));
v::startsWith(“foo”) ->check(array(“foo bar baz”));
v::endsWith(“baz”) ->check(array(“foo bar baz”));
![Page 67: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/67.jpg)
30 de Novembro PHP Conference 2012 67
//Validadores Legais
v::oneOf( v::arr()->length(1, 15), v::object()->attribute(“items”));
![Page 68: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/68.jpg)
30 de Novembro PHP Conference 2012 68
Posso ter as minhas próprias regras?
![Page 69: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/69.jpg)
30 de Novembro PHP Conference 2012 69
v::callback(function ($input) { return $input === 42;});
![Page 70: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/70.jpg)
30 de Novembro PHP Conference 2012 70
Ok, mas posso ter meu próprio objeto?
![Page 71: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/71.jpg)
30 de Novembro PHP Conference 2012 71
use Respect\Validation;
class Universe implements Validation\Validatable extends Validation\Rules\AbstractRule{ public function validate($input) { return $input === 42; }}
v::int()->addRule(new Universe);
![Page 72: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/72.jpg)
30 de Novembro PHP Conference 2012 72
E as mensagens?
![Page 73: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/73.jpg)
30 de Novembro PHP Conference 2012 73
use Respect\Validation;
class UniverseException extends Validation\Exceptions\ValidationException{ public static $defaultTemplates = array( self::MODE_DEFAULT => array( self::STANDARD => '{{name}} must be 42', ), self::MODE_NEGATIVE => array( self::STANDARD => '{{name}} must not be 42', ) );}
![Page 74: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/74.jpg)
30 de Novembro PHP Conference 2012 74
Onde eu baixo?
![Page 75: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/75.jpg)
30 de Novembro PHP Conference 2012 75
github.com/Respect/ValidationPackagistrespect.li/pear
![Page 76: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/76.jpg)
30 de Novembro PHP Conference 2012 76
github.com/Respect/ValidationPackagistrespect.li/pear
Perguntas?
![Page 77: Domine Validação de Dados em 45min](https://reader034.vdocuments.pub/reader034/viewer/2022042715/55986c0b1a28ab380b8b47d8/html5/thumbnails/77.jpg)
30 de Novembro PHP Conference 2012 77
github.com/Respect/ValidationPackagistrespect.li/pear
Obrigado!