respect-validation/docs/rules/PropertyOptional.md
Henrique Moody be72a54845
Add templates to each rule documentation
They only know what message a rule produces when they try running it.
Including the messages in the documentation will make it easier for
people to know what to expect.

There are a couple of undocumented placeholders, but I can live with
that for now.
2024-12-06 00:21:47 +01:00

2.2 KiB

PropertyOptional

  • PropertyOptional(string $propertyName, Rule $rule)

Validates an object property against a given rule only if the property exists.

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

v::propertyOptional('name', v::notEmpty())->isValid($object); // true
v::propertyOptional('email', v::email())->isValid($object); // true

v::propertyOptional('age', v::intVal())->isValid($object); // true
v::propertyOptional('website', v::url())->isValid($object); // true

v::propertyOptional('name', v::lowercase())->isValid($object); // false

The name of this validator is automatically set to the property name.

v::propertyOptional('email', v::endsWith('@example.com'))->assert($object);
// message: email must end with "@example.com"

Note

This rule will validate public, private, protected, uninitialised, and static properties. However, it will pass for anything that is not an object because it will always pass when it doesn't find a property in the input. If you want to ensure the input is an object, use ObjectType with it.

v::propertyOptional('name', v::notEmpty())->isValid('Not an object'); // true
v::objectType()->propertyOptional('name', v::notEmpty())->isValid('Not an object'); // false
  • To only validate if a property exists, use PropertyExists instead.
  • To validate a property against a given rule requiring the property to exist, use Property instead.

Templates

Template placeholders

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

Categorization

  • Nesting
  • Objects
  • Structures

Changelog

Version Description
3.0.0 Created from Property

See also: