mirror of
https://github.com/Respect/Validation.git
synced 2026-03-14 22:35:45 +01:00
Introduces a Markdown linter for checking the Changelog format. "See Also" was transformed into a section to make it easier to handle it with the `Content` class. The "Related" linter was simplified to reflect that change too. An additional "alignment" parameter was added to markdown table generators, allowing the padding and headers to be explicitly marked with a specific left (-1), middle (0) or right(1) alignment. Existing files were fixed using the `fix` option after the changes.
2.5 KiB
2.5 KiB
PropertyOptional
PropertyOptional(string $propertyName, Validator $validator)
Validates an object property against a given validator only if the property exists.
$object = new stdClass;
$object->name = 'The Respect Panda';
$object->email = 'therespectpanda@gmail.com';
v::propertyOptional('name', v::notBlank())->assert($object);
// Validation passes successfully
v::propertyOptional('email', v::email())->assert($object);
// Validation passes successfully
v::propertyOptional('age', v::intVal())->assert($object);
// Validation passes successfully
v::propertyOptional('website', v::url())->assert($object);
// Validation passes successfully
v::propertyOptional('name', v::lowercase())->assert($object);
// → `.name` must contain only lowercase letters
The name of this validator is automatically set to the property name.
v::propertyOptional('email', v::endsWith('@example.com'))->assert($object);
// → `.email` must end with "@example.com"
Note
This validator 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::notBlank())->assert('Not an object');
// Validation passes successfully
v::objectType()->propertyOptional('name', v::notBlank())->assert('Not an object');
// → "Not an object" must be an object
- To only validate if a property exists, use PropertyExists instead.
- To validate a property against a given validator requiring the property to exist, use Property instead.
Templates
Template placeholders
| Placeholder | Description |
|---|---|
subject |
The validated input or the custom validator name (if specified). |
Categorization
- Nesting
- Objects
- Structures
Changelog
| Version | Description |
|---|---|
| 3.0.0 | Created from Property |