respect-validation/docs/validators/KeyExists.md
Alexandre Gomes Gaigalas d9cdc118b2 Introduce REUSE compliance
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.
2026-01-21 06:28:11 +00:00

2.7 KiB

KeyExists

  • KeyExists(string|int $key)

Validates if the given key exists in an array.

v::keyExists('name')->assert(['name' => 'The Respect Panda']);
// Validation passes successfully

v::keyExists('name')->assert(['email' => 'therespectpanda@gmail.com']);
// → `.name` must be present

v::keyExists(0)->assert(['a', 'b', 'c']);
// Validation passes successfully

v::keyExists(4)->assert(['a', 'b', 'c']);
// → `.4` must be present

v::keyExists('username')->assert(new ArrayObject(['username' => 'therespectpanda']));
// Validation passes successfully

v::keyExists(5)->assert(new ArrayObject(['a', 'b', 'c']));
// → `.5` must be present

Notes

  • To validate an array against a given validator if the key exists, use KeyOptional instead.
  • To validate an array against a given validator requiring the key to exist, use Key instead.

Templates

KeyExists::TEMPLATE_STANDARD

Mode Template
default {{subject}} must be present
inverted {{subject}} must not be present

Template placeholders

Placeholder Description
subject The validated input or the custom validator name (if specified).

Caveats

KeyExists defines the given $key as the path, and because it is a standalone validator without children, it's not possible to display a fully custom name with it.

When no custom name is set, the path is displayed as {{name}}. When a custom name is set, the validation engine prepends the path to the custom name:

v::keyExists('foo')->assert([]);
// → `.foo` must be present

v::named('Custom name', v::keyExists('foo'))->assert([]);
// → `.foo` (<- Custom name) must be present

If you want to display only a custom name while checking if a key exists, use Key with AlwaysValid:

v::key('foo', v::named('Custom name', v::alwaysValid()))->assert([]);
// → Custom name must be present

Categorization

  • Arrays
  • Structures

Changelog

Version Description
3.0.0 Created from Key

See also: