mirror of
https://github.com/Respect/Validation.git
synced 2024-06-28 02:00:06 +02:00
a647a4737b
Currently, the Key rule has a third parameter that allows the validation of the wrapped rule to be optional, meaning that the validation will only happen if the key exists. That parameter makes the rule harder to understand at times. I'm splitting the Key rule into Key, KeyExists, and KeyOptional. That way, it becomes apparent when someone wants only to validate whether a key exists or if they're going to validate the value of the key only when it exists. I deliberately didn't create an abstract class because those rules are different enough not to have an abstraction. In fact, I can see myself deleting the "AbstractRelated" in the upcoming changes. With these changes, the KeySet rule will not accept validating if the key exists or validating the value only if the key exists. I should refactor that soon, and I will likely need to create a common interface for Key, KeyExists, and KeyOptional. Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
53 lines
1.4 KiB
PHP
53 lines
1.4 KiB
PHP
--FILE--
|
|
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
require 'vendor/autoload.php';
|
|
|
|
use Respect\Validation\Validator as v;
|
|
|
|
exceptionFullMessage(static function (): void {
|
|
v::create()
|
|
->key(
|
|
'mysql',
|
|
v::create()
|
|
->key('host', v::stringType())
|
|
->key('user', v::stringType())
|
|
->key('password', v::stringType())
|
|
->key('schema', v::stringType())
|
|
)
|
|
->key(
|
|
'postgresql',
|
|
v::create()
|
|
->key('host', v::stringType())
|
|
->key('user', v::stringType())
|
|
->key('password', v::stringType())
|
|
->key('schema', v::stringType())
|
|
)
|
|
->setName('the given data')
|
|
->assert([
|
|
'mysql' => [
|
|
'host' => 42,
|
|
'schema' => 42,
|
|
],
|
|
'postgresql' => [
|
|
'user' => 42,
|
|
'password' => 42,
|
|
],
|
|
]);
|
|
});
|
|
?>
|
|
--EXPECT--
|
|
- All of the required rules must pass for the given data
|
|
- All of the required rules must pass for mysql
|
|
- host must be of type string
|
|
- user must be present
|
|
- password must be present
|
|
- schema must be of type string
|
|
- All of the required rules must pass for postgresql
|
|
- host must be present
|
|
- user must be of type string
|
|
- password must be of type string
|
|
- schema must be present
|