daidecesarano / embryo-validation
PSR-7 请求的 PHP 验证。
Requires
- php: >=7.1
Requires (Dev)
- davidecesarano/embryo-http: dev-master
This package is auto-updated.
Last update: 2024-09-28 19:04:19 UTC
README
PSR-7 请求的 PHP 验证。
特性
- PSR 兼容。
- 用于
$request->getParsedBody
和$request->getUploadedFiles
。 - 清理值。
需求
- PHP >= 7.1
- A PSR-7 http 消息实现和 PSR-17 http 工厂实现(例如 Embryo-Http)
安装
使用 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!