52 lines
1.2 KiB
Markdown
52 lines
1.2 KiB
Markdown
|
# Call
|
||
|
|
||
|
- `v::call(callable $callback)`
|
||
|
|
||
|
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:
|
||
|
|
||
|
```php
|
||
|
$url = 'http://www.google.com/search?q=respect.github.com'
|
||
|
```
|
||
|
|
||
|
To validate every part of this URL we could use the native `parse_url`
|
||
|
function to break its parts:
|
||
|
|
||
|
```php
|
||
|
$parts = parse_url($url);
|
||
|
```
|
||
|
|
||
|
This function returns an array containing `scheme`, `host`, `path` and `query`.
|
||
|
We can validate them this way:
|
||
|
|
||
|
```php
|
||
|
v::arrayVal()->key('scheme', v::startsWith('http'))
|
||
|
->key('host', v::domain())
|
||
|
->key('path', v::stringType())
|
||
|
->key('query', v::notEmpty());
|
||
|
```
|
||
|
|
||
|
Using `v::call()` you can do this in a single chain:
|
||
|
|
||
|
```php
|
||
|
v::call(
|
||
|
'parse_url',
|
||
|
v::arrayVal()->key('scheme', v::startsWith('http'))
|
||
|
->key('host', v::domain())
|
||
|
->key('path', v::stringType())
|
||
|
->key('query', v::notEmpty())
|
||
|
)->validate($url);
|
||
|
```
|
||
|
|
||
|
It is possible to call methods and closures as the first parameter:
|
||
|
|
||
|
```php
|
||
|
v::call([$myObj, 'methodName'], v::intVal())->validate($myInput);
|
||
|
v::call(function($input) {}, v::intVal())->validate($myInput);
|
||
|
```
|
||
|
|
||
|
***
|
||
|
See also:
|
||
|
|
||
|
* [Callback](Callback.md)
|