respect-validation/docs/validators/PropertyExists.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.6 KiB

PropertyExists

  • PropertyExists(string $propertyName)

Validates if an object property exists.

$object = new stdClass;
$object->name = 'The Respect Panda';
$object->email = 'therespectpanda@gmail.com';

v::propertyExists('name')->assert($object);
// Validation passes successfully

v::propertyExists('email')->assert($object);
// Validation passes successfully

v::propertyExists('website')->assert($object);
// → `.website` must be present

Notes

This validator will validate public, private, protected, uninitialised, and static properties.

  • To validate a property against a given validator requiring the property to exist, use Property instead.
  • To validate a property against a given validator only if the property exists, use PropertyOptional instead.

Templates

PropertyExists::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

PropertyExists defines the given $propertyName 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::propertyExists('foo')->assert([]);
// → `.foo` must be present

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

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

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

Categorization

  • Objects
  • Structures

Changelog

Version Description
3.0.0 Created from Property

See also: