apdev / lawn-mower
数据验证
v2.2.0
2023-07-18 09:28 UTC
Requires
- symfony/mime: 5.2
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-18 12:08:36 UTC
README
LawnMower 是一个轻量级库,用于 GET、POST 和 FILE 验证,基于 Laravel 和 Zend 验证器。其主要组件包括 Request
、Validator
、Rule
和 FileUpload
对象。
安装
$ composer require apdev/lawn-mower
基本用法
<?php use LawnMower\Request; $request = new Request(); if($request->hasData()){ //or hasPost(), hasGet(), hasFiles() $valid_data = $request->validate([ 'field_name' => 'rule_name|other_rule_name:with_param|rule_name', 'other_field' => [ 'rule_name', 'some_other_rule', $rule_instance, //instance of LawnMower\Rule::class ... ], ... ]); if($request->isValid()){ //do stuff }else{ $errors = $request->errors(); $input = $request->all(); $specific_fields = $request->only([ 'field_name', 'some_other_field', ... ]); } }
请求对象
请求对象自动收集所有 $_GET
、$_POST
和 $_FILES
数据,并将其传递给一个 Validator::class
实例。处理 $_FILES
时将其视为 FileUpload::class
实例,这是一个方便处理文件上传的类。
规则
可用规则
注意:顺序无关紧要,所有规则在执行前都会被评估。
- required - 字段必须存在且不为空,不为空字符串、空数组或空文件。
- nullable - 字段可以省略。
- bail - 在此过滤器之后,一旦过滤器失败,就停止执行检查。
- email - 字段必须是有效的电子邮件。
- url - 字段必须是有效的 URL。
- alpha_num - 字段必须只包含字母和数字。
- alpha - 字段必须只包含字母。
- numeric - 字段必须只包含数字。
- digits:size - 字段必须只包含数字字符,且长度必须精确为 size。
- mimes:extension1,extension2,... - 字段必须是有效的 FileUpload 且与指定的 extensions 匹配。扩展名由文件的 MIME 类型及其二进制数据猜测。
- file - 字段必须是有效的文件。
- size:value - 字段大小必须精确为 value。与数组、字符串和文件一起使用。
- in:value1,value2,... - 字段必须是指定的值之一。
- gte:value - 字段必须大于或等于 value。与数字一起使用。
- gt:value - 字段必须大于 value。与数字一起使用。
- lt:value - 字段必须小于 value。与数字一起使用。
- lte:value - 字段必须小于或等于 value。与数字一起使用。
- min:value - 字段大小必须大于或等于 value。与数组和文件一起使用。
- max:value - 字段大小必须小于或等于 value。与数组和文件一起使用。
- integer - 字段必须是有效的整数。
- boolean - 字段必须是有效的布尔值。接受的值有
true
、false
、0
、1
、'true'
、'false'
。 - string - 字段必须是字符串。
- date - 字段必须是有效的日期。
- slug - 字段必须只包含小写字母、数字和
-
。 - recaptcha:secret - 字段是 Google Recaptcha 字段,如果有效,它将自动从验证数据中删除。
有三种方法可以将 Rules
传递给 Validator
:让我们看看文件字段。
通过字符串
$valid_data = $request->validate([ 'file_field' => 'required|file|mimes:pdf,docx' ]);
通过字符串数组
$valid_data = $request->validate([ 'file_field' => [ 'required', 'file', 'mimes:pdf,docx' ], ]);
通过实例数组(或字符串和实例的混合)
$valid_data = $request->validate([ 'file_field' => [ 'required', 'file', new LawnMower\Rules\Mimes([ 'pdf','docx' ]), ], ]);
最后一种方法在您需要将 $variable
作为参数传递给规则时非常有用。完整的 string => RuleClass
映射在 RulesMapping.php
文件中。
自定义规则
可以通过扩展标准 LawnMower\Rule::class
并将实例传递给 Validator 来使用自定义规则。
<?php use LawnMower\Rule; class MyRule extends Rule { protected $error_message = "###FIELD### has my custom error message, with ###PARAMS### too."; public function isValid():bool { echo $this->value; //value to be checked echo $this->params; //array of params passed by constructor //my stuff goes here return true; // or false } }
文件上传
这个类提供了一些方便的方法,帮助您处理通过表单上传的文件。如果文件不是通过 $file->store($path)
方法存储,它将在对象析构时自动删除。
... //get instance of LawnMower\FileUpload::class $upload = $valid_data['file_upload']; $upload->isEmpty(); //checks if file is empty $upload->getPath(); //returns full file path $upload->getFilename(); //returns filename.ext without path $stored_file = $upload->store("path/to/file/destination"); //stores file and returns a LawnMower\File::class instance;
由 apdev 开发的包,2021 年。