daidecesarano/embryo-validation

PSR-7 请求的 PHP 验证。

dev-master 2020-01-28 08:21 UTC

This package is auto-updated.

Last update: 2024-09-28 19:04:19 UTC


README

PSR-7 请求的 PHP 验证。

特性

  • PSR 兼容。
  • 用于 $request->getParsedBody$request->getUploadedFiles
  • 清理值。

需求

安装

使用 Composer

$ composer require davidecesarano/embryo-validation

示例

您可以通过内置的 PHP 服务器快速测试此功能,访问 https://:8000

$ cd example
$ php -S localhost:8000

使用方法

编写简单的验证逻辑

假设我们有一个 POST 请求。使用 PSR,我们可以在 $request->getParsedBody() 中找到 $_POST 参数,在 $request->getUploadedFiles() 中找到 $_FILES 文件。使用 Embryo Validation 来验证参数值。

$request = (new Embryo\Http\Factory\ServerRequestFactory)->createServerRequestFromServer();
$validation = new Embryo\Validation\Validation($request);

$validation->name('title')->type('text')->required();
$validation->name('body')->type('any')->required();
if ($validation->isSuccess()) {
    // ...
} else {
    print_r($validation->getErrors());
}

如果验证规则通过,您的代码将正常执行;然而,如果验证失败,您可以显示错误。

方法

name(string $name)

设置字段名称。如果名称在 $request->getParsedBody()$request->getUploadedFiles() 中不存在,则返回 null。

type(string $type)

设置字段类型。如果值与类型不匹配,则返回错误。类型包括

  • text。值可以是任何内容,它将使用 FILTER_SANITIZE_STRING 进行清理。
  • email。值必须是电子邮件。
  • file。值必须是一个 UploadedFileInterface 对象数组或一个 UploadedFileInterface 对象。
  • array。值必须是一个数组。
  • datetime。值必须是 DateTime 格式。
  • number。值必须是一个通用数字。
  • int。值必须是一个整数。
  • float。值必须是一个浮点数。
  • url。值必须是一个 URL。
  • slug。值必须是一个路径别名。
  • boolean。值必须是一个布尔值。
  • any。值可以是任何内容,不进行清理(这在 HTML 代码中很有用)。

required()

设置字段要求。值不能为空。

pattern(string $type)

设置字段模式。值必须匹配正则表达式。

equal($value)

设置字段值。值必须相同。

match(... $value)

设置字段匹配。值必须匹配其中一个值。

length(int $min, int $max)

设置字段长度。值可能不小于 $min 且大于 $max

maxSize(int $size)

设置字段文件最大大小。文件大小(以字节为单位)不能大于 $size

accept(... $ext)

设置文件字段的允许扩展名。扩展名必须匹配其中一个值。

result(): array

返回验证结果。此方法返回一个类似数组的数组

    return [
        'status' => 200,
        'data' => [
            'title' => 'Hello World!',
            'body' => 'This is a post...',
            'name' => ''
        ],
        'errors' => [
            'name' => [
                'The name field is required.'
            ]
        ],
        'errorList' => [
            'The name field is required.'
        ]
    ];

如果验证失败,状态是 400,否则是 200

isSuccess(): bool

如果验证通过,则返回 true,否则返回 false

getErrors(): array

返回一个多维数组,键为字段名,值为错误数组。

getErrorList(): 数组

返回错误数组。

getData([string $key])

返回清洗过的数据数组。如果值是UploadedFileInterface实例,必须使用例如$file->getClientFilename()来返回文件名。可以返回单个项目

    echo $validation->getData('title'); // Hello World!