# KeySet

- `v::keySet(Key $rule...)`

Validates a keys in a defined structure.

```php
$dict = ['foo' => 42];

v::keySet(
    v::key('foo', v::intVal())
)->validate($dict); // true
```

Extra keys are not allowed:
```php
$dict = ['foo' => 42, 'bar' => 'String'];

v::keySet(
    v::key('foo', v::intVal())
)->validate($dict); // false
```

Missing required keys are not allowed:
```php
$dict = ['foo' => 42, 'bar' => 'String'];

v::keySet(
    v::key('foo', v::intVal()),
    v::key('bar', v::stringType()),
    v::key('baz', v::boolType())
)->validate($dict); // false
```

Missing non-required keys are allowed:
```php
$dict = ['foo' => 42, 'bar' => 'String'];

v::keySet(
    v::key('foo', v::intVal()),
    v::key('bar', v::stringType()),
    v::key('baz', v::boolType(), false)
)->validate($dict); // true
```

The keys' order is not considered in the validation.

***
See also:

  * [ArrayVal](ArrayVal.md)
  * [Key](Key.md)
  * [KeyValue](KeyValue.md)
