respect-validation/README.md

1583 lines
34 KiB
Markdown
Raw Normal View History

Respect\Validation [![Build Status](https://secure.travis-ci.org/Respect/Validation.png)](http://travis-ci.org/Respect/Validation) [![Latest Stable Version](https://poser.pugx.org/respect/validation/v/stable.png)](https://packagist.org/packages/respect/validation) [![Total Downloads](https://poser.pugx.org/respect/validation/downloads.png)](https://packagist.org/packages/respect/validation) [![Latest Unstable Version](https://poser.pugx.org/respect/validation/v/unstable.png)](https://packagist.org/packages/respect/validation) [![License](https://poser.pugx.org/respect/validation/license.png)](https://packagist.org/packages/respect/validation)
2011-02-07 02:35:35 +01:00
==================
2013-01-22 22:08:38 +01:00
2012-04-09 00:08:39 +02:00
The most awesome validation engine ever created for PHP.
2011-02-07 02:35:35 +01:00
- Fluent/Chained builders like `v::numeric()->positive()->between(1, 256)->validate($myNumber)` (more samples below)
2011-02-07 02:35:35 +01:00
- Informative, awesome exceptions
- More than 30 fully tested validators
2011-02-07 15:46:08 +01:00
Installation
2012-04-10 03:46:28 +02:00
------------
2012-04-10 04:14:20 +02:00
Packages available on [PEAR](http://respect.li/pear) and [Composer](http://packagist.org/packages/Respect/Validation). Autoloading is [PSR-0](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md) compatible.
2011-02-07 15:46:08 +01:00
Feature Guide
2012-04-10 03:46:28 +02:00
-------------
2011-02-07 02:35:35 +01:00
2012-04-10 04:14:20 +02:00
### Namespace Import
2011-02-07 02:35:35 +01:00
2011-02-07 15:46:08 +01:00
Respect\Validation is namespaced, but you can make your life easier by importing
a single class into your context:
<?php
2011-02-07 02:35:35 +01:00
use Respect\Validation\Validator as v;
2012-04-10 04:14:20 +02:00
### Simple Validation
2011-02-07 02:35:35 +01:00
2011-02-07 15:46:08 +01:00
The Hello World validator is something like this:
$number = 123;
v::numeric()->validate($number); //true
2011-02-07 02:35:35 +01:00
2012-04-10 04:14:20 +02:00
### Chained Validation
2011-02-07 02:35:35 +01:00
2012-04-09 00:08:39 +02:00
It is possible to use validators in a chain. Sample below validates a string
2013-02-26 00:15:23 +01:00
containing numbers and letters, no whitespace and length between 1 and 15.
2011-02-07 02:35:35 +01:00
2012-04-09 00:08:39 +02:00
$usernameValidator = v::alnum()->noWhitespace()->length(1,15);
$usernameValidator->validate('alganet'); //true
2011-02-07 02:35:35 +01:00
2012-04-10 04:14:20 +02:00
### Validating Object Attributes
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
Given this simple object:
2011-02-07 02:35:35 +01:00
2012-04-09 00:08:39 +02:00
$user = new stdClass;
$user->name = 'Alexandre';
2011-02-07 02:35:35 +01:00
$user->birthdate = '1987-07-01';
2012-04-09 00:08:39 +02:00
Is possible to validate its attributes in a single chain:
$userValidator = v::attribute('name', v::string()->length(1,32))
->attribute('birthdate', v::date()->minimumAge(18));
$userValidator->validate($user); //true
Validating array keys is also possible using `v::key()`
2011-02-07 02:35:35 +01:00
2012-04-09 00:08:39 +02:00
Note that we used `v::string()` and `v::date()` in the beginning of the validator.
Although is not mandatory, it is a good practice to use the type of the
validated object as the first node in the chain.
2011-02-07 02:35:35 +01:00
### Input optional
All validators treat input as optional and will accept empty string input as valid,
2013-02-26 00:15:23 +01:00
unless otherwise stated in the documentation.
We us the `v:notEmpty()` validator prefixed to disallow empty input and effectively
define the field as mandatory as input will be required or validation will fail.
v::string()->notEmpty()->validate(''); //false input required
2012-04-10 04:14:20 +02:00
### Negating Rules
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
You can use the `v::not()` to negate any rule:
v::not(v::int())->validate(10); //false, input must not be integer
2012-04-09 00:08:39 +02:00
2013-01-22 22:08:38 +01:00
### Validator Reuse
2012-04-09 00:08:39 +02:00
Once created, you can reuse your validator anywhere. Remember $usernameValidator?
$usernameValidator->validate('respect'); //true
2013-01-22 22:08:38 +01:00
$usernameValidator->validate('alexandre gaigalas'); //false
$usernameValidator->validate('#$%'); //false
2011-02-07 02:35:35 +01:00
2012-04-10 04:14:20 +02:00
### Informative Exceptions
2011-02-07 02:35:35 +01:00
2013-02-26 00:15:23 +01:00
When something goes wrong, Validation can tell you exactly what's going on. For this,
2012-04-09 00:08:39 +02:00
we use the `assert()` method instead of `validate()`:
2011-02-07 02:35:35 +01:00
try {
2012-04-09 00:08:39 +02:00
$usernameValidator->assert('really messed up screen#name');
2011-02-07 02:35:35 +01:00
} catch(\InvalidArgumentException $e) {
echo $e->getFullMessage();
}
2012-04-09 00:08:39 +02:00
The printed message is exactly this, as a text tree:
\-All of the 3 required rules must pass
2012-04-09 00:08:39 +02:00
|-"really messed up screen#name" must contain only letters (a-z) and digits (0-9)
|-"really messed up screen#name" must not contain whitespace
\-"really messed up screen#name" must have a length between 1 and 15
2012-04-10 04:14:20 +02:00
### Getting Messages
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
The text tree is fine, but unusable on a HTML form or something more custom. You can use
`findMessages()` for that:
try {
$usernameValidator->assert('really messed up screen#name');
} catch(\InvalidArgumentException $e) {
var_dump($e->findMessages(array('alnum', 'length', 'noWhitespace')));
2012-04-09 00:08:39 +02:00
}
`findMessages()` returns an array with messages from the requested validators.
2012-04-10 04:14:20 +02:00
### Custom Messages
2012-04-09 00:08:39 +02:00
Getting messages as an array is fine, but sometimes you need to customize them in order
to present them to the user. This is possible using the `findMessages()` method as well:
$errors = $e->findMessages(array(
2013-01-22 22:08:38 +01:00
'alnum' => '{{name}} must contain only letters and digits',
'length' => '{{name}} must not have more than 15 chars',
2012-04-09 00:08:39 +02:00
'noWhitespace' => '{{name}} cannot contain spaces'
));
2012-04-09 00:08:39 +02:00
For all messages, the `{{name}}` and `{{input}}` variable is available for templates.
2012-04-10 04:14:20 +02:00
### Validator Name
2012-04-09 00:08:39 +02:00
2013-01-22 22:08:38 +01:00
On `v::attribute()` and `v::key()`, `{{name}}` is the attribute/key name. For others,
2012-04-09 00:08:39 +02:00
is the same as the input. You can customize a validator name using:
v::date('Y-m-d')->between('1980-02-02', 'now')->setName('Member Since');
2011-02-07 15:46:08 +01:00
2012-04-10 04:14:20 +02:00
### Zend/Symfony Validators
2011-02-07 02:35:35 +01:00
2012-04-09 00:08:39 +02:00
It is also possible to reuse validators from other frameworks if they are installed:
2012-04-09 00:08:39 +02:00
$hostnameValidator = v::zend('Hostname')->assert('google.com');
$timeValidator = v::sf('Time')->assert('22:00:01');
2012-04-10 04:14:20 +02:00
### Validation Methods
2012-04-09 00:08:39 +02:00
We've seen `validate()` that returns true or false and `assert()` that throws a complete
validation report. There is also a `check()` method that returns an Exception
only with the first error found:
2011-02-07 02:35:35 +01:00
try {
2012-04-09 00:08:39 +02:00
$usernameValidator->check('really messed up screen#name');
} catch(\InvalidArgumentException $e) {
echo $e->getMainMessage();
2011-02-07 02:35:35 +01:00
}
2012-04-09 00:08:39 +02:00
Message:
"really messed up screen#name" must contain only letters (a-z) and digits (0-9)
Reference
2012-04-10 03:46:28 +02:00
---------
2012-04-09 00:08:39 +02:00
2012-04-10 04:14:20 +02:00
### Types
2012-04-09 00:08:39 +02:00
2012-04-09 00:55:05 +02:00
* v::arr()
2012-04-09 00:08:39 +02:00
* v::bool()
* v::date()
* v::float()
* v::hexa() *(deprecated)*
2012-04-09 00:08:39 +02:00
* v::instance()
* v::int()
2012-04-09 00:55:05 +02:00
* v::nullValue()
* v::numeric()
* v::object()
* v::string()
* v::xdigit()
2012-04-09 00:55:05 +02:00
2012-04-10 04:14:20 +02:00
### Generics
2012-04-09 00:55:05 +02:00
* v::call()
* v::callback()
* v::not()
* v::when()
* v::alwaysValid()
* v::alwaysInvalid()
2012-04-09 00:08:39 +02:00
2012-04-10 04:14:20 +02:00
### Comparing Values
2012-04-09 00:08:39 +02:00
* v::between()
2012-04-09 00:55:05 +02:00
* v::equals()
2012-04-09 00:08:39 +02:00
* v::max()
2012-04-09 00:55:05 +02:00
* v::min()
2012-04-09 00:08:39 +02:00
2012-04-10 04:14:20 +02:00
### Numeric
2012-04-09 00:08:39 +02:00
* v::between()
* v::bool()
* v::even()
2012-04-09 00:55:05 +02:00
* v::float()
* v::hexa() *(deprecated)*
2012-04-09 00:08:39 +02:00
* v::int()
2012-04-09 00:55:05 +02:00
* v::multiple()
* v::negative()
* v::notEmpty()
* v::numeric()
* v::odd()
* v::perfectSquare()
* v::positive()
* v::primeNumber()
* v::roman()
* v::xdigit()
2012-04-09 00:08:39 +02:00
2013-01-22 22:08:38 +01:00
### String
2012-04-09 00:08:39 +02:00
* v::alnum()
2012-04-09 00:55:05 +02:00
* v::alpha()
2012-04-09 00:08:39 +02:00
* v::between()
2012-12-07 02:31:24 +01:00
* v::charset()
* v::consonants() *(deprecated)*
* v::consonant()
2012-04-09 00:08:39 +02:00
* v::contains()
* v::cntrl()
2013-01-22 22:07:57 +01:00
* v::digits() *(deprecated)*
* v::digit()
2012-04-09 00:08:39 +02:00
* v::endsWith()
* v::in()
* v::graph()
2012-04-09 00:55:05 +02:00
* v::length()
2012-04-09 00:08:39 +02:00
* v::lowercase()
2012-04-09 00:55:05 +02:00
* v::notEmpty()
* v::noWhitespace()
2013-01-23 02:09:19 +01:00
* v::prnt()
* v::punct()
2012-04-09 00:55:05 +02:00
* v::regex()
* v::slug()
* v::space()
2012-04-09 00:55:05 +02:00
* v::startsWith()
2012-04-09 00:08:39 +02:00
* v::uppercase()
2012-04-09 00:55:05 +02:00
* v::uppercase()
* v::version()
* v::vowels() *(deprecated)*
* v::vowel()
* v::xdigit()
2012-04-09 00:08:39 +02:00
2012-04-10 04:14:20 +02:00
### Arrays
2012-04-09 00:08:39 +02:00
* v::arr()
* v::contains()
* v::each()
* v::endsWith()
* v::in()
* v::key()
* v::length()
2012-04-09 00:55:05 +02:00
* v::notEmpty()
* v::startsWith()
2012-04-09 00:08:39 +02:00
2012-04-10 04:14:20 +02:00
### Objects
* v::attribute()
* v::instance()
* v::length()
### Date and Time
2012-04-09 00:08:39 +02:00
* v::between()
2012-04-09 00:55:05 +02:00
* v::date()
2012-04-09 00:08:39 +02:00
* v::leapDate()
* v::leapYear()
2012-04-10 04:14:20 +02:00
### Group Validators
2012-04-09 00:08:39 +02:00
* v::allOf()
2012-04-09 00:55:05 +02:00
* v::noneOf()
* v::oneOf()
### Regional
* v::tld()
2013-02-26 00:15:23 +01:00
* v::countryCode()
### Files
* v::directory()
* v::exists()
* v::file()
* v::readable()
* v::symbolicLink()
* v::uploaded()
* v::writable()
2012-04-10 03:46:28 +02:00
### Other
2012-11-26 01:34:41 +01:00
* v::cnh()
2012-04-09 00:08:39 +02:00
* v::cnpj()
* v::cpf()
* v::domain()
2012-04-09 00:08:39 +02:00
* v::email()
* v::ip()
* v::json()
* v::macAddress()
* v::phone()
2012-04-09 00:55:05 +02:00
* v::sf()
* v::zend()
2012-04-10 03:46:28 +02:00
### Alphabetically
2012-04-10 03:46:28 +02:00
#### v::allOf($v1, $v2, $v3...)
2012-04-09 00:08:39 +02:00
Will validate if all inner validators validates.
2011-02-07 02:35:35 +01:00
2012-04-09 00:08:39 +02:00
v::allOf(
v::int(),
v::positive()
)->validate(15); //true
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
This is similar to the chain (which is an allOf already), but
its syntax allows you to set custom names for every node:
2011-02-07 02:35:35 +01:00
2012-04-09 00:08:39 +02:00
v::allOf(
v::int()->setName('Account Number'),
v::positive()->setName('Higher Than Zero')
)->setName('Positive integer')
->validate(15); //true
2011-02-07 02:35:35 +01:00
2012-04-09 00:08:39 +02:00
See also:
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
* v::oneOf() - Validates if at least one inner rule pass
* v::noneOf() - Validates if no inner rules pass
2012-04-09 00:55:05 +02:00
* v::when() - A Ternary validator
2011-02-07 15:46:08 +01:00
2012-04-10 03:46:28 +02:00
#### v::alnum()
#### v::alnum(string $additionalChars)
2011-02-07 15:46:08 +01:00
2013-01-22 22:08:38 +01:00
Validates alphanumeric characters from a-Z and 0-9.
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
v::alnum()->validate('foo 123'); //true
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
A parameter for extra characters can be used:
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
v::alnum('-')->validate('foo - 123'); //true
2011-02-07 15:46:08 +01:00
2013-01-22 22:08:38 +01:00
This validator allows whitespace, if you want to
2012-04-09 00:08:39 +02:00
remove them add `->noWhitespace()` to the chain:
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
v::alnum()->noWhitespace->validate('foo 123'); //false
2011-02-07 15:46:08 +01:00
By default empty values are allowed, if you want
2012-04-09 00:08:39 +02:00
to invalidate them, add `->notEmpty()` to the chain:
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
v::alnum()->notEmpty()->validate(''); //false
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
You can restrict case using the `->lowercase()` and
`->uppercase()` validators:
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
v::alnum()->uppercase()->validate('aaa'); //false
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
Message template for this validator includes `{{additionalChars}}` as
the string of extra chars passed as the parameter.
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
See also:
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
* v::alpha() - a-Z, empty or whitespace only
2013-01-22 22:07:57 +01:00
* v::digit() - 0-9, empty or whitespace only
* v::consonant()
* v::vowel()
2011-02-07 15:46:08 +01:00
2012-04-10 03:46:28 +02:00
#### v::alpha()
#### v::alpha(string $additionalChars)
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
This is similar to v::alnum(), but it doesn't allow numbers. It also
accepts empty values and whitespace, so use `v::notEmpty()` and
`v::noWhitespace()` when appropriate.
2011-02-07 02:35:35 +01:00
2012-04-09 00:08:39 +02:00
See also:
2011-02-07 02:35:35 +01:00
2012-04-09 00:08:39 +02:00
* v::alnum() - a-z0-9, empty or whitespace only
2013-01-22 22:07:57 +01:00
* v::digit() - 0-9, empty or whitespace only
* v::consonant()
* v::vowel()
2011-02-07 15:46:08 +01:00
2012-04-10 03:46:28 +02:00
#### v::arr()
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
Validates if the input is an array or traversable object.
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
v::arr()->validate(array()); //true
v::arr()->validate(new ArrayObject); //true
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
See also:
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
* v::each() - Validates each member of an array
* v::key() - Validates a specific key of an array
2011-02-07 15:46:08 +01:00
### v::alwaysValid
Always returns true.
### v::alwaysInvalid
Always return false.
2012-04-10 03:46:28 +02:00
#### v::attribute($name)
#### v::attribute($name, v $validator)
#### v::attribute($name, v $validator, boolean $mandatory=true)
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
Validates an object attribute.
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
$obj = new stdClass;
$obj->foo = 'bar';
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
v::attribute('foo')->validate($obj); //true
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
You can also validate the attribute itself:
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
v::attribute('foo', v::equals('bar'))->validate($obj); //true
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
Third parameter makes the attribute presence optional:
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
v::attribute('lorem', v::string(), false)->validate($obj); // true
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
The name of this validator is automatically set to the attribute name.
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
See also:
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
* v::key() - Validates a specific key of an array
2011-02-07 15:46:08 +01:00
2012-04-10 03:46:28 +02:00
#### v::between($start, $end)
#### v::between($start, $end, boolean $inclusive=false)
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
Validates ranges. Most simple example:
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
v::int()->between(10, 20)->validate(15); //true
2011-02-07 15:46:08 +01:00
2013-01-22 22:08:38 +01:00
The type as the first validator in a chain is a good practice,
2012-04-09 00:08:39 +02:00
since between accepts many types:
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
v::string()->between('a', 'f')->validate('c'); //true
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
Also very powerful with dates:
2012-04-09 00:08:39 +02:00
v::date()->between('2009-01-01', '2013-01-01')->validate('2010-01-01'); //true
2012-04-09 00:08:39 +02:00
Date ranges accept strtotime values:
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
v::date()->between('yesterday', 'tomorrow')->validate('now'); //true
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
A third parameter may be passed to validate the passed values inclusive:
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
v::date()->between(10, 20, true)->validate(20); //true
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
Message template for this validator includes `{{minValue}}` and `{{maxValue}}`.
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
See also:
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
* v::length() - Validates the length of a input
* v::min()
* v::max()
2011-02-07 15:46:08 +01:00
2012-04-10 03:46:28 +02:00
#### v::bool()
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
Validates if the input is a boolean value:
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
v::bool()->validate(true); //true
v::bool()->validate(false); //true
2011-02-07 15:46:08 +01:00
2012-04-10 03:46:28 +02:00
#### v::call(callable $callback)
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
This is a very low level validator. It calls a function, method or closure
for the input and then validates it. Consider the following variable:
$url = 'http://www.google.com/search?q=respect.github.com'
2013-01-22 22:08:38 +01:00
To validate every part of this URL we could use the native `parse_url`
2012-04-09 00:08:39 +02:00
function to break its parts:
$parts = parse_url($url);
This function returns an array containing `scheme`, `host`, `path` and `query`.
We can validate them this way:
v::arr()->key('scheme', v::startsWith('http'))
->key('host', v::domain())
->key('path', v::string())
->key('query', v::notEmpty());
Using `v::call()` you can do this in a single chain:
v::call(
2013-01-22 22:08:38 +01:00
'parse_url',
2012-04-09 00:08:39 +02:00
v::arr()->key('scheme', v::startsWith('http'))
->key('host', v::domain())
->key('path', v::string())
->key('query', v::notEmpty())
)->validate($url);
It is possible to call methods and closures as the first parameter:
v::call(array($myObj, 'methodName'), v::int())->validate($myInput);
v::call(function($input) {}, v::int())->validate($myInput);
See also:
* v::callback() - Similar, but a different workflow.
2012-04-10 03:46:28 +02:00
#### v::callback(callable $callback)
2012-04-09 00:08:39 +02:00
This is a wildcard validator, it uses a function name, method or closure
to validate something:
v::callback('is_int')->validate(10); //true
(Please note that this is a sample, the `v::int()` validator is much better).
As in `v::call()`, you can pass a method or closure to it.
See also:
* v::call() - A more elaborated building block validator
2012-12-07 02:31:24 +01:00
#### v::charset()
Validates if a string is in a specific charset.
v::charset('ASCII', 'açúcar'); //false
v::charset('ASCII', 'sugar'); //true
v::charset(array('ISO-8859-1', 'EUC-JP'), '日本国'); // true
The array format is a logic OR, not AND.
2012-04-10 03:46:28 +02:00
#### v::cnpj()
2012-04-09 00:08:39 +02:00
Validates the Brazillian CNPJ number. Ignores non-digit chars, so
2013-01-22 22:07:57 +01:00
use `->digit()` if needed.
2012-04-09 00:08:39 +02:00
See also:
* v::cpf() - Validates the Brazillian CPF number.
2012-11-26 01:34:41 +01:00
* v::cnh() - Validates the Brazillian driver's license.
2012-04-09 00:08:39 +02:00
#### v::consonants() *(deprecated)*
Validates strings that contain only consonants. It's now deprecated, consonant should be used
instead.
See also:
* v::consonant()
#### v::consonant()
#### v::consonant(string $additionalChars)
2012-04-09 00:08:39 +02:00
Similar to `v::alnum()`. Validates strings that contain only consonants:
v::consonant()->validate('xkcd'); //true
2012-04-09 00:08:39 +02:00
See also:
* v::alnum() - a-z0-9, empty or whitespace only
2013-01-22 22:07:57 +01:00
* v::digit() - 0-9, empty or whitespace only
2012-04-09 00:08:39 +02:00
* v::alpha() - a-Z, empty or whitespace only
* v::vowel()
2012-04-09 00:08:39 +02:00
2012-04-10 03:46:28 +02:00
#### v::contains($value)
#### v::contains($value, boolean $identical=false)
2012-04-09 00:08:39 +02:00
For strings:
v::contains('ipsum')->validate('lorem ipsum'); //true
For arrays:
v::contains('ipsum')->validate(array('ipsum', 'lorem')); //true
A second parameter may be passed for identical comparison instead
of equal comparison.
Message template for this validator includes `{{containsValue}}`.
See also:
* v::startsWith()
* v::endsWith()
* v::in()
#### v::cntrl
#### v::cntrl(string $additionalChars)
This is similar to `v::alnum()`, but only accepts control characters:
v::cntrl()->validate("\n\r\t"); //true
See also:
* v::alnum() - a-z0-9, empty or whitespace only
2013-01-23 02:09:19 +01:00
* v::prnt() - all printable characters
* v::space() - empty or whitespace only
#### v::countryCode
Validates an ISO country code like US or BR.
v::countryCode('BR'); //true
See also:
* v::tld() - Validates a top level domain
#### v::cnh()
Validates a Brazillian driver's license.
v::cnh()->validate('02650306461');
See also:
* v::cnpj()
* v::cpf()
2012-04-10 03:46:28 +02:00
#### v::cpf()
2012-04-09 00:08:39 +02:00
Validates a Brazillian CPF number.
v::cpf()->validate('44455566820');
It ignores any non-digit char:
v::cpf()->validate('444.555.668-20');
2013-01-22 22:07:57 +01:00
If you need to validate digits only, add `->digit()` to
2012-04-09 00:08:39 +02:00
the chain:
2013-01-22 22:07:57 +01:00
v::digit()->cpf()->validate('44455566820');
2012-04-09 00:08:39 +02:00
See also:
* v::cnpj()
2012-11-26 01:34:41 +01:00
* v::cnh()
2012-04-09 00:08:39 +02:00
2012-04-10 03:46:28 +02:00
#### v::creditCard()
2012-04-09 00:08:39 +02:00
2013-01-22 22:08:38 +01:00
Validates a credit card number.
2012-04-09 00:08:39 +02:00
v::creditCard()->validate($myCredCardNumber);
2013-01-22 22:07:57 +01:00
It ignores any non-digit chars, so use `->digit()` when appropriate.
2012-04-09 00:08:39 +02:00
2013-01-22 22:07:57 +01:00
v::digit()->creditCard()->validate($myCredCardNumber);
2012-04-09 00:08:39 +02:00
2012-04-10 03:46:28 +02:00
#### v::date()
#### v::date($format)
2012-04-09 00:08:39 +02:00
Validates if input is a date:
v::date()->validate('2009-01-01'); //true
Also accepts strtotime values:
v::date()->validate('now'); //true
And DateTime instances:
v::date()->validate(new DateTime); //true
You can pass a format when validating strings:
v::date('Y-m-d')->validate('01-01-2009'); //false
Format has no effect when validating DateTime instances.
Message template for this validator includes `{{format}}`.
See also:
* v::between()
* v::minimumAge()
* v::leapDate()
* v::leapYear()
2013-01-22 22:07:57 +01:00
#### v::digits() *(deprecated)*
Validates 0-9, empty or whitespace only. It's now deprecated, digit should be used
instead.
See also:
* v::digit()
#### v::digit()
2012-04-09 00:08:39 +02:00
This is similar to v::alnum(), but it doesn't allow a-Z. It also
accepts empty values and whitespace, so use `v::notEmpty()` and
`v::noWhitespace()` when appropriate.
2013-01-22 22:07:57 +01:00
See also:
2012-04-09 00:08:39 +02:00
* v::alnum() - a-z0-9, empty or whitespace only
* v::alpha() - a-Z, empty or whitespace only
* v::vowel()
* v::consonant()
2012-04-09 00:08:39 +02:00
2012-04-10 03:46:28 +02:00
#### v::domain()
2012-04-09 00:08:39 +02:00
2013-01-22 22:08:38 +01:00
Validates domain names.
2012-04-09 00:08:39 +02:00
v::domain()->validate('google.com');
This is a composite validator, it validates several rules
internally:
* If input is an IP address, it validates
* If input contains whitespace, it fails
* If input not contains any dot, it fails
* If input has less than two parts, it fails
* Input must end with a top-level-domain to pass
* Each part must be alphanumeric and not start with an hyphen
Messages for this validator will reflect rules above.
See also:
* v::tld()
* v::ip()
2013-01-22 22:08:38 +01:00
#### v::directory()
Validates directories.
v::directory()->validate(__DIR__); //true
v::directory()->validate(__FILE__); //false
2012-04-20 06:54:13 +02:00
This validator will consider SplFileInfo instances, so you can do something like:
v::directory()->validate(new \SplFileInfo($directory));
2012-04-09 00:08:39 +02:00
See also
* v::exists()
* v::file()
2012-04-10 03:46:28 +02:00
#### v::each(v $validatorForValue)
#### v::each(null, v $validatorForKey)
#### v::each(v $validatorForValue, v $validatorForKey)
2012-04-09 00:08:39 +02:00
Iterates over an array or Iterator and validates the value or key
of each entry:
$releaseDates = array(
'validation' => '2010-01-01',
'template' => '2011-01-01',
'relational' => '2011-02-05',
);
v::arr()->each(v::date())->validate($releaseDates); //true
v::arr()->each(v::date(), v::string()->lowercase())->validate($releaseDates); //true
Using `arr()` before `each()` is a best practice.
See also:
* v::key()
* v::arr()
2012-04-10 03:46:28 +02:00
#### v::email()
2012-04-09 00:08:39 +02:00
Validates an email address.
v::email()->validate('alexandre@gaigalas.net'); //true
#### v::exists()
Validates files or directories.
v::exists()->validate(__FILE__); //true
v::exists()->validate(__DIR__); //true
This validator will consider SplFileInfo instances, so you can do something like:
v::exists()->validate(new \SplFileInfo($file));
See also
* v::directory()
* v::file()
2012-04-10 03:46:28 +02:00
#### v::endsWith($value)
#### v::endsWith($value, boolean $identical=false)
2012-04-09 00:08:39 +02:00
This validator is similar to `v::contains()`, but validates
only if the value is at the end of the input.
For strings:
v::endsWith('ipsum')->validate('lorem ipsum'); //true
For arrays:
v::endsWith('ipsum')->validate(array('lorem', 'ipsum')); //true
A second parameter may be passed for identical comparison instead
of equal comparison.
Message template for this validator includes `{{endValue}}`.
See also:
* v::startsWith()
* v::contains()
* v::in()
2012-04-10 03:46:28 +02:00
#### v::equals($value)
#### v::equals($value, boolean $identical=false)
2012-04-09 00:08:39 +02:00
Validates if the input is equal some value.
v::equals('alganet')->validate('alganet'); //true
Identical validation (===) is possible:
v::equals(10)->validate('10'); //true
v::equals(10, true)->validate('10'); //false
Message template for this validator includes `{{compareTo}}`.
See also:
* v::contains()
2012-04-10 03:46:28 +02:00
#### v::even()
2012-04-09 00:08:39 +02:00
Validates an even number.
v::int()->even()->validate(2); //true
Using `int()` before `even()` is a best practice.
See also
* v::odd()
* v::multiple()
#### v::file()
Validates files.
v::file()->validate(__FILE__); //true
v::file()->validate(__DIR__); //false
This validator will consider SplFileInfo instances, so you can do something like:
v::file()->validate(new \SplFileInfo($file));
See also
* v::directory()
* v::exists()
2012-04-10 03:46:28 +02:00
#### v::float()
2012-04-09 00:08:39 +02:00
Validates a floating point number.
v::float()->validate(1.5); //true
v::float()->validate('1e5'); //true
#### v::graph()
#### v::graph(string $additionalChars)
Validates all characters that are graphically represented.
v::graph()->validate('LKM@#$%4;'); //true
See also:
2013-01-23 02:09:19 +01:00
* v::prnt()
#### v::hexa() *(deprecated)*
2012-04-09 00:08:39 +02:00
Validates an hexadecimal number. It's now deprecated, xdigit should be used
instead.
2012-04-09 00:08:39 +02:00
v::hexa()->validate('AF12'); //true
See also:
* v::xdigit()
2012-04-10 03:46:28 +02:00
#### v::in($haystack)
#### v::in($haystack, boolean $identical=false)
2012-04-09 00:08:39 +02:00
Validates if the input is contained in a specific haystack.
For strings:
v::in('lorem ipsum')->validate('ipsum'); //true
For arrays:
v::in(array('lorem', 'ipsum'))->validate('lorem'); //true
A second parameter may be passed for identical comparison instead
of equal comparison.
Message template for this validator includes `{{haystack}}`.
See also:
* v::startsWith()
* v::endsWith()
* v::contains()
2012-04-10 03:46:28 +02:00
#### v::instance($instanceName)
2012-04-09 00:08:39 +02:00
Validates if the input is an instance of the given class or interface.
v::instance('DateTime')->validate(new DateTime); //true
2013-02-26 00:15:23 +01:00
v::instance('Traversable')->validate(new ArrayObject); //true
2012-04-09 00:08:39 +02:00
Message template for this validator includes `{{instanceName}}`.
See also:
* v::object()
2012-04-10 03:46:28 +02:00
#### v::int()
2012-04-09 00:08:39 +02:00
Validates if the input is an integer.
v::int()->validate('10'); //true
v::int()->validate(10); //true
See also:
* v::numeric()
2013-01-22 22:07:57 +01:00
* v::digit()
2012-04-09 00:08:39 +02:00
2012-04-10 03:46:28 +02:00
#### v::ip()
#### v::ip($options)
2012-04-09 00:08:39 +02:00
Validates IP Addresses. This validator uses the native filter_var()
PHP function.
v::ip()->validate('192.168.0.1');
You can pass a parameter with filter_var flags for IP.
v::ip(FILTER_FLAG_NO_PRIV_RANGE)->validate('127.0.0.1'); //false
2012-04-10 03:46:28 +02:00
#### v::json()
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
Validates if the given input is a valid JSON.
2011-02-07 15:46:08 +01:00
2012-04-09 00:08:39 +02:00
v::json->validate('{"foo":"bar"}'); //true
2011-02-07 15:46:08 +01:00
2012-04-10 03:46:28 +02:00
#### v::key($name)
#### v::key($name, v $validator)
#### v::key($name, v $validator, boolean $mandatory=true)
2012-04-09 00:08:39 +02:00
Validates an array key.
$dict = array(
'foo' => 'bar'
2011-02-07 15:46:08 +01:00
);
2012-04-09 00:08:39 +02:00
v::key('foo')->validate($dict); //true
You can also validate the key value itself:
v::key('foo', v::equals('bar'))->validate($dict); //true
Third parameter makes the key presence optional:
v::key('lorem', v::string(), false)->validate($dict); // true
The name of this validator is automatically set to the key name.
See also:
* v::attribute() - Validates a specific attribute of an object
2012-04-10 03:46:28 +02:00
#### v::leapDate($format)
2012-04-09 00:08:39 +02:00
Validates if a date is leap.
v::leapDate('Y-m-d')->validate('1988-02-29'); //true
This validator accepts DateTime instances as well. The $format
parameter is mandatory.
See also:
* v::date()
* v::leapYear()
2012-04-10 03:46:28 +02:00
#### v::leapYear()
2012-04-09 00:08:39 +02:00
Validates if a year is leap.
v::leapYear()->validate('1988'); //true
This validator accepts DateTime instances as well.
See also:
* v::date()
* v::leapDate()
2012-04-10 03:46:28 +02:00
#### v::length($min, $max)
#### v::length($min, null)
#### v::length(null, $max)
#### v::length($min, $max, boolean $inclusive=false)
2012-04-09 00:08:39 +02:00
Validates lengths. Most simple example:
v::string()->length(1, 5)->validate('abc'); //true
You can also validate only minimum length:
v::string()->length(5, null)->validate('abcdef'); // true
Only maximum length:
v::string()->length(null, 5)->validate('abc'); // true
2013-01-22 22:08:38 +01:00
The type as the first validator in a chain is a good practice,
2012-04-09 00:08:39 +02:00
since length accepts many types:
v::arr()->length(1, 5)->validate(array('foo', 'bar')); //true
A third parameter may be passed to validate the passed values inclusive:
v::string()->length(1, 5, true)->validate('a'); //true
Message template for this validator includes `{{minValue}}` and `{{maxValue}}`.
See also:
* v::between() - Validates ranges
2012-04-10 03:46:28 +02:00
#### v::lowercase()
2012-04-09 00:08:39 +02:00
Validates if string characters are lowercase in the input:
v::string()->lowercase()->validate('xkcd'); //true
See also:
* v::uppercase()
2012-04-10 03:46:28 +02:00
#### v::macAddress()
2012-04-09 00:08:39 +02:00
Validates a Mac Address.
v::macAddress()->validate('00:11:22:33:44:55'); //true
2012-04-10 03:46:28 +02:00
#### v::max()
#### v::max(boolean $inclusive=false)
2012-04-09 00:08:39 +02:00
Validates if the input doesn't exceed the maximum value.
v::int()->max(15)->validate(20); //false
Also accepts dates:
v::date()->max('2012-01-01')->validate('2010-01-01'); //true
2013-01-22 22:08:38 +01:00
`true` may be passed as a parameter to indicate that inclusive
2012-04-09 00:08:39 +02:00
values must be used.
Message template for this validator includes `{{maxValue}}`.
See also:
* v::min()
* v::between()
2012-04-10 03:46:28 +02:00
#### v::min()
#### v::min(boolean $inclusive=false)
2012-04-09 00:08:39 +02:00
Validates if the input doesn't exceed the minimum value.
v::int()->min(15)->validate(5); //false
Also accepts dates:
v::date()->min('2012-01-01')->validate('2015-01-01'); //true
2013-01-22 22:08:38 +01:00
`true` may be passed as a parameter to indicate that inclusive
2012-04-09 00:08:39 +02:00
values must be used.
Message template for this validator includes `{{minValue}}`.
See also:
* v::max()
* v::between()
2012-04-10 03:46:28 +02:00
#### v::minimumAge($age)
2012-04-09 00:08:39 +02:00
Validates a minimum age for a given date.
v::date()->minimumAge(18)->validate('1987-01-01'); //true
Using `date()` before is a best-practice.
2013-01-22 22:08:38 +01:00
Message template for this validator includes `{{age}}`.
2012-04-09 00:08:39 +02:00
See also:
* v::date()
2012-04-10 03:46:28 +02:00
#### v::multiple($multipleOf)
2012-04-09 00:08:39 +02:00
Validates if the input is a multiple of the given parameter
v::int()->multiple(3)->validate(9); //true
See also:
* v::primeNumber()
2012-04-10 03:46:28 +02:00
#### v::negative()
2012-04-09 00:08:39 +02:00
Validates if a number is lower than zero
v::numeric()->negative()->validate(-15); //true
See also:
* v::positive()
2012-04-10 03:46:28 +02:00
#### v::noWhitespace()
2012-04-09 00:08:39 +02:00
Validates if a string contains no whitespace (spaces, tabs and line breaks);
v::noWhitespace()->validate('foo bar'); //false
v::noWhitespace()->validate("foo\nbar"); //false
Like other rules the input is still optional.
v::string()->noWhitespace()->validate(''); //true
v::string()->noWhitespace()->validate(' '); //false
2012-04-09 00:08:39 +02:00
This is most useful when chaining with other validators such as `v::alnum()`
2012-04-10 03:46:28 +02:00
#### v::noneOf($v1, $v2, $v3...)
2012-04-09 00:08:39 +02:00
Validates if NONE of the given validators validate:
v::noneOf(
v::int(),
v::float()
)->validate('foo'); //true
In the sample above, 'foo' isn't a integer nor a float, so noneOf returns true.
See also:
* v::not()
* v::allOf()
* v::oneOf()
2012-04-10 03:46:28 +02:00
#### v::not(v $negatedValidator)
2012-04-09 00:08:39 +02:00
Negates any rule.
v::not(v::ip())->validate('foo'); //true
2013-01-22 22:08:38 +01:00
2013-02-26 00:15:23 +01:00
using a shortcut
2012-05-06 02:06:13 +02:00
v::ip()->not()->validate('foo'); //true
2012-04-09 00:08:39 +02:00
In the sample above, validator returns true because 'foo' isn't an IP Address.
You can negate complex, grouped or chained validators as well:
v::not(v::int()->positive())->validate(-1.5); //true
2013-01-22 22:08:38 +01:00
2013-02-26 00:15:23 +01:00
using a shortcut
2012-05-06 02:06:13 +02:00
v::int()->positive()->not()->validate(-1.5); //true
2012-04-09 00:08:39 +02:00
Each other validation has custom messages for negated rules.
See also:
* v::noneOf()
2012-04-10 03:46:28 +02:00
#### v::notEmpty()
2012-04-09 00:08:39 +02:00
Validates if the given input is not empty or in other words is input mandatory and
2013-02-26 00:15:23 +01:00
required. This function also takes whitespace into account, use `noWhitespace()`
if no spaces or linebreaks and other whitespace anywhere in the input is desired.
2012-04-09 00:08:39 +02:00
v::string()->notEmpty()->validate(''); //false
Null values are empty:
v::notEmpty()->validate(null); //false
Numbers:
v::int()->notEmpty()->validate(0); //false
Empty arrays:
v::arr()->notEmpty()->validate(array()); //false
Whitespace:
v::string()->notEmpty()->validate(' '); //false
v::string()->notEmpty()->validate("\t \n \r"); //false
2012-04-09 00:08:39 +02:00
See also:
* v::noWhitespace()
* v::nullValue()
2012-04-10 03:46:28 +02:00
#### v::nullValue()
2012-04-09 00:08:39 +02:00
Validates if the input is null. This rule does not allow empty strings to avoid ambiguity.
2012-04-09 00:08:39 +02:00
v::nullValue()->validate(null); //true
See also:
* v::notEmpty()
2012-04-10 03:46:28 +02:00
#### v::numeric()
2012-04-09 00:08:39 +02:00
Validates on any numeric value.
v::numeric()->validate(-12); //true
v::numeric()->validate('135.0'); //true
See also:
* v::int()
2013-01-22 22:07:57 +01:00
* v::digit()
2012-04-09 00:08:39 +02:00
2012-04-10 03:46:28 +02:00
#### v::object()
2012-04-09 00:08:39 +02:00
Validates if the input is an object.
v::object()->validate(new stdClass); //true
See also:
* v::instance()
* v::attribute()
2012-04-10 03:46:28 +02:00
#### v::odd()
2012-04-09 00:08:39 +02:00
Validates an odd number.
v::int()->odd()->validate(3); //true
Using `int()` before `odd()` is a best practice.
See also
* v::even()
* v::multiple()
2012-04-10 03:46:28 +02:00
#### v::oneOf($v1, $v2, $v3...)
2012-04-09 00:55:05 +02:00
This is a group validator that acts as an OR operator.
v::oneOf(
v::int(),
v::float()
)->validate(15.5); //true
In the sample above, `v::int()` doesn't validates, but
`v::float()` validates, so oneOf returns true.
`v::oneOf` returns true if at least one inner validator
passes.
2012-04-09 00:08:39 +02:00
2012-05-06 02:06:13 +02:00
Using a shortcut
v::int()->addOr(v::float())->validate(15.5); //true
2012-04-09 00:55:05 +02:00
See also:
2012-04-09 00:08:39 +02:00
2012-04-09 00:55:05 +02:00
* v::allOf() - Similar to oneOf, but act as an AND operator
* v::noneOf() - Validates if NONE of the inner rules validates
* v::when() - A ternary validator
2012-04-09 00:08:39 +02:00
2012-04-10 03:46:28 +02:00
#### v::perfectSquare()
2012-04-09 00:08:39 +02:00
2012-04-09 00:55:05 +02:00
Validates a perfect square.
v::perfectSquare()->validate(25); //true (5*5)
v::perfectSquare()->validate(9); //true (3*3)
#### v::phone()
Validates a valid 7, 10, 11 digit phone number (North America, Europe and most
Asian and Middle East countries), supporting country and area codes (in dot,
space or dashed notations) such as:
(555)555-5555
555 555 5555
+5(555)555.5555
33(1)22 22 22 22
+33(1)22 22 22 22
+33(020)7777 7777
03-6106666
2012-04-10 03:46:28 +02:00
#### v::positive()
2012-04-09 00:08:39 +02:00
Validates if a number is higher than zero
v::numeric()->positive()->validate(-15); //false
See also:
* v::negative()
2012-04-10 03:46:28 +02:00
#### v::primeNumber()
2012-04-09 00:08:39 +02:00
2012-04-09 00:55:05 +02:00
Validates a prime number
v::primeNumber()->validate(7); //true
2013-01-22 22:08:38 +01:00
2013-01-23 02:09:19 +01:00
#### v::prnt()
#### v::prnt(string $additionalChars)
Similar to `v::graph` but accepts whitespace.
2013-01-23 02:09:19 +01:00
v::prnt()->validate('LMKA0$% _123'); //true
See also:
* v::graph()
2013-01-22 22:08:38 +01:00
#### v::punct()
#### v::punct(string $additionalChars)
Accepts only punctuation characters:
v::punct()->validate('&,.;[]'); //true
See also:
* v::cntrl()
* v::graph()
2013-01-23 02:09:19 +01:00
* v::prnt()
2012-04-09 00:55:05 +02:00
#### v::readable()
Validates if the given data is a file exists and is readable.
v::readable()->validate('/path/of/a/readable/file'); //true
2012-04-10 03:46:28 +02:00
#### v::regex($regex)
2012-04-09 00:55:05 +02:00
Evaluates a regex on the input and validates if matches
v::regex('/[a-z]/')->validate('a'); //true
Message template for this validator includes `{{regex}}`
2012-04-09 00:08:39 +02:00
2012-04-10 03:46:28 +02:00
#### v::roman()
2012-04-09 00:08:39 +02:00
2012-04-09 00:55:05 +02:00
Validates roman numbers
v::roman()->validate('IV'); //true
This validator ignores empty values, use `notEmpty()` when
appropriate.
2012-04-10 03:46:28 +02:00
#### v::sf($sfValidator)
2012-04-09 00:55:05 +02:00
Use Symfony2 validators inside Respect\Validation flow. Messages
are preserved.
v::sf('Time')->validate('15:00:00');
You must add Symfony2 to your autoloading routines.
See also:
* v::zend()
2012-04-09 00:08:39 +02:00
2012-04-10 03:46:28 +02:00
#### v::slug()
2012-04-09 00:08:39 +02:00
2012-04-09 00:55:05 +02:00
Validates slug-like strings:
v::slug()->validate('my-wordpress-title'); //true
v::slug()->validate('my-wordpress--title'); //false
v::slug()->validate('my-wordpress-title-'); //false
#### v::space()
#### v::space(string $additionalChars)
Accepts only whitespace:
v::space()->validate(' '); //true
See also:
* v::cntrl()
2012-04-10 03:46:28 +02:00
#### v::startsWith($value)
#### v::startsWith($value, boolean $identical=false)
2012-04-09 00:08:39 +02:00
This validator is similar to `v::contains()`, but validates
only if the value is at the end of the.
For strings:
v::startsWith('lorem')->validate('lorem ipsum'); //true
For arrays:
v::startsWith('lorem')->validate(array('lorem', 'ipsum')); //true
2013-02-26 00:15:23 +01:00
`true` may be passed as a parameter to indicate identical comparison
2012-04-09 00:08:39 +02:00
instead of equal.
Message template for this validator includes `{{startValue}}`.
See also:
* v::endsWith()
* v::contains()
* v::in()
2012-04-10 03:46:28 +02:00
#### v::string()
2012-04-09 00:08:39 +02:00
2012-04-09 00:55:05 +02:00
Validates a string.
v::string()->validate('hi'); //true
See also:
* v::alnum()
#### v::symbolicLink()
Validates if the given data is a path of a valid symbolic link.
v::symbolicLink()->validate('/path/of/valid/symbolic/link'); //true
2012-04-10 03:46:28 +02:00
#### v::tld()
2012-04-09 00:08:39 +02:00
2012-04-09 00:55:05 +02:00
Validates a top-level domain
v::tld()->validate('com'); //true
v::tld()->validate('ly'); //true
v::tld()->validate('org'); //true
See also
* v::domain() - Validates domain names
* v::countryCode() - Validates ISO country codes
2012-04-09 00:55:05 +02:00
#### v::uploaded()
Validates if the given data is a file was uploaded via HTTP POST.
v::uploaded()->validate('/path/of/an/uploaded/file'); //true
2012-04-10 03:46:28 +02:00
#### v::uppercase()
2012-04-09 00:08:39 +02:00
2012-04-09 00:55:05 +02:00
Validates if string characters are uppercase in the input:
v::string()->uppercase()->validate('W3C'); //true
See also:
* v::lowercase()
2012-04-10 03:46:28 +02:00
#### v::version()
2012-04-09 00:08:39 +02:00
2012-04-09 00:55:05 +02:00
Validates version numbers using Semantic Versioning.
v::version()->validate('1.0.0');
#### v::vowels() *(deprecated)*
2012-04-09 00:08:39 +02:00
Validates strings that contains only vowels. It's now deprecated, vowel should be used
instead.
See also:
* v::vowel()
#### v::vowel()
Similar to `v::alnum()`. Validates strings that contains only vowels:
2012-04-09 00:55:05 +02:00
v::vowel()->validate('aei'); //true
2012-04-09 00:55:05 +02:00
See also:
* v::alnum() - a-z0-9, empty or whitespace only
2013-01-22 22:07:57 +01:00
* v::digit() - 0-9, empty or whitespace only
2012-04-09 00:55:05 +02:00
* v::alpha() - a-Z, empty or whitespace only
* v::consonant()
2012-04-09 00:55:05 +02:00
2012-04-10 03:46:28 +02:00
#### v::when(v $if, v $then, v $else)
2012-04-09 00:08:39 +02:00
2013-01-22 22:08:38 +01:00
A ternary validator that accepts three parameters.
2012-04-09 00:08:39 +02:00
2012-04-09 00:55:05 +02:00
When the $if validates, returns validation for $then.
2013-02-26 00:15:23 +01:00
When the $if doesn't validate, returns validation for $else.
2012-04-09 00:55:05 +02:00
v::when(v::int(), v::positive(), v::notEmpty())->validate($input);
In the sample above, if `$input` is an integer, then it must be positive.
If `$input` is not an integer, then it must not me empty.
See also:
* v::allOf()
* v::oneOf()
* v::noneOf()
#### v::xdigit()
Accepts an hexadecimal number:
v::xdigit()->validate('abc123'); //true
Notice, however, that it doesn't accept strings starting with 0x:
v::xdigit()->validate('0x1f'); //false
See also:
2013-01-22 22:07:57 +01:00
* v::digit()
* v::alnum()
#### v::writable()
Validates if the given data is a file exists and is writable.
v::writable()->validate('/path/of/a/writable/file'); //true
2012-04-10 03:46:28 +02:00
#### v::zend($zendValidator)
2012-04-09 00:55:05 +02:00
Use Zend validators inside Respect\Validation flow. Messages
are preserved.
v::zend('Hostname')->validate('google.com');
You need to put Zend Framework in your autoload routines.
See also:
2012-04-09 00:08:39 +02:00
2012-04-09 00:55:05 +02:00
* v::sf()
2012-04-09 00:08:39 +02:00