laurynasgadl/php-validator

PHP 数组值验证库

v3.0.0 2023-07-19 11:04 UTC

README

受Laravel表单验证启发

use Luur\Validator\Validator;
use Luur\Validator\Rules\Concrete\MinRule;
use Luur\Validator\Rules\Concrete\RequiredRule;
use Luur\Validator\Exceptions\ValidationFailed;

$validator = new Validator();

$rules = [
    'client_id'    => 'required|integer',
    'amount'       => [new RequiredRule(), new MinRule(0)],
    'count'        => 'between:-12,50',
    'details'      => 'array|required',
    '*.name'       => 'string|required',
];

$params = [
    'client_id' => 12345,
    'amount'    => 1234,
    'details'   => [
        'name'  => 'John Doe',
    ],
];

try {
    $allParams       = $validator->validate($rules, $params);
    $validatedParams = $validator->validated();
} catch (ValidationFailed $exception) {
    var_dump($exception->getMessage());
}

安装

composer require laurynasgadl/php-validator

文档

规则

自定义规则

use Luur\Validator\Rules\AbstractRule;
use Luur\Validator\Validator;

class CustomRule extends AbstractRule {
    /**
     * @param mixed $value
     * @return bool
     */
    public function passes($value)
    {
        return true;
    }
}

$validator = new Validator();

$params = ['test' => 123];
$result = $validator->validate([
    'test' => new CustomRule(),
], $params);

您还可以将规则注册为字符串以使用它

use Luur\Validator\Rules\AbstractRule;
use Luur\Validator\Validator;

class CustomRule extends AbstractRule {
    /**
     * @param mixed $value
     * @return bool
     */
    public function passes($value)
    {
        return true;
    }
}

$validator = new Validator();
$validator->registerRule(CustomRule::getSlug(), CustomRule::class);

$params = ['test' => 123];
$result = $validator->validate([
    'test' => 'test',
], $params);

现有规则

array : 值必须是数组

between:{from_size},{to_size} : 值必须在给定范围内

float : 值必须是浮点数

integer : 值必须是整数

max:{max_size} : 值必须小于或等于给定数量

min:{min_size} : 值必须大于或等于给定数量

required : 参数必须在数据集中存在

required_with:{param_1}... : 如果所有其他参数都存在,则参数必须在数据集中存在

required_without:{param_1}... : 如果其他参数之一不存在,则参数必须在数据集中存在

size : 值的大小必须等于给定数量。字符串的大小是其长度,数组的大小是其元素数量,布尔值的大小是0或1。

string : 值必须是字符串

boolean : 值必须是布尔值

numeric : 值必须是数字

default:{value} : 规则将始终首先应用,这意味着,即使参数的值未设置或为null,参数也可以成功通过required规则

alpha_dash : 值只能由大写和小写字母、数字以及-_符号组成

alpha_numeric : 值只能由大写和小写字母以及数字组成

regex:{pattern} : 值必须匹配给定的模式

email : 值必须是电子邮件

url : 值必须以http://https://开头,并且只能包含URL有效的符号

ip : 值必须是IP地址

自定义消息

您可以通过Validator构造函数或validate方法设置自定义验证消息

use Luur\Validator\Validator;

$validator = new Validator();

$rules = [
    'options.*.key' => 'string|required',
];

$params = [
    'options' => [
        [
            'key' => 'passes',
            'value' => true,
        ],
        [
            'key' => ['passes'],
            'value' => false,
        ],
    ],
];

$messages = [
    'options.*.key.string' => 'Option key should be a string',
];

$validator->validate($rules, $params, $messages);