mirror of
https://github.com/Respect/Validation.git
synced 2026-03-15 06:45:44 +01:00
This commit introduces REUSE compliance by annotating all files with SPDX information and placing the reused licences in the LICENSES folder. We additionally removed the docheader tool which is made obsolete by this change. The main LICENSE and copyright text of the project is now not under my personal name anymore, and it belongs to "The Respect Project Contributors" instead. This change restores author names to several files, giving the appropriate attribution for contributions.
3.5 KiB
3.5 KiB
KeySet
KeySet(Validator $validator)KeySet(Validator $validator, Validator ...$validators)
Validates a keys in a defined structure.
v::keySet(
v::keyExists('foo'),
v::keyExists('bar')
)->assert(['foo' => 'whatever', 'bar' => 'something']);
// Validation passes successfully
It will validate the keys in the array with the validators passed in the constructor.
v::keySet(
v::key('foo', v::intVal())
)->assert(['foo' => 42]);
// Validation passes successfully
v::keySet(
v::key('foo', v::intVal())
)->assert(['foo' => 'string']);
// → `.foo` must be an integer value
Extra keys are not allowed:
v::keySet(
v::key('foo', v::intVal())
)->assert(['foo' => 42, 'bar' => 'String']);
// → `.bar` must not be present
Missing required keys are not allowed:
v::keySet(
v::key('foo', v::intVal()),
v::key('bar', v::stringType()),
v::key('baz', v::boolType())
)->assert(['foo' => 42, 'bar' => 'String']);
// → `.baz` must be present
Missing non-required keys are allowed:
v::keySet(
v::key('foo', v::intVal()),
v::key('bar', v::stringType()),
v::keyOptional('baz', v::boolType())
)->assert(['foo' => 42, 'bar' => 'String']);
// Validation passes successfully
Alternatively, you can pass a chain of key-related validators to keySet():
v::keySet(
v::init()
->key('foo', v::intVal())
->key('bar', v::stringType())
->keyOptional('baz', v::boolType())
)->assert(['foo' => 42, 'bar' => 'String']);
// Validation passes successfully
It is not possible to negate keySet() validators with not().
The keys' order is not considered in the validation.
Templates
KeySet::TEMPLATE_STANDARD
| Mode | Template |
|---|---|
default |
{{subject}} validation failed |
inverted |
{{subject}} validation passed |
KeySet::TEMPLATE_BOTH
| Mode | Template |
|---|---|
default |
{{subject}} contains both missing and extra keys |
inverted |
{{subject}} contains no missing or extra keys. |
KeySet::TEMPLATE_EXTRA_KEYS
| Mode | Template |
|---|---|
default |
{{subject}} contains extra keys |
inverted |
{{subject}} contains no extra keys |
KeySet::TEMPLATE_MISSING_KEYS
| Mode | Template |
|---|---|
default |
{{subject}} contains missing keys |
inverted |
{{subject}} contains no missing keys |
Template placeholders
| Placeholder | Description |
|---|---|
subject |
The validated input or the custom validator name (if specified). |
Categorization
- Arrays
- Nesting
- Structures
Changelog
| Version | Description |
|---|---|
| 3.0.0 | Requires at least one key-related validator |
| 2.3.0 | KeySet is NonNegatable, fixed message with extra keys |
| 1.0.0 | Created |
See also: