webman request

v1.0.4
版本
2025-05-10
版本更新時(shí)間
39
安裝
2
star
Webman框架請(qǐng)求驗(yàn)證器擴(kuò)展包
本擴(kuò)展包為Webman框架提供了一個(gè)優(yōu)雅的請(qǐng)求驗(yàn)證解決方案,內(nèi)置了ThinkPHP驗(yàn)證器,通過依賴注入方式自動(dòng)生成請(qǐng)求對(duì)象,并對(duì)對(duì)象的字段進(jìn)行校驗(yàn)。
安裝
通過Composer安裝:
composer require hollisho/webman-request
基本使用
定義請(qǐng)求類
首先,創(chuàng)建一個(gè)繼承自WebmanRequest
的請(qǐng)求類:
<?php
namespace app\request;
use Hollisho\WebmanRequest\WebmanRequest;
class MyRequest extends WebmanRequest
{
// 定義請(qǐng)求參數(shù)屬性
public $id;
public $status = 0; // 可以設(shè)置默認(rèn)值
// 定義驗(yàn)證規(guī)則
public function rules()
{
return [
'id' => 'require|number',
'status' => 'require|number',
];
}
// 定義錯(cuò)誤消息
protected function messages()
{
return [
'id.require' => 'id不能為空',
'id.number' => 'id必須為數(shù)字',
'status.require' => 'status不能為空',
'status.number' => 'status必須為數(shù)字',
];
}
}
在控制器中使用
在控制器中通過依賴注入方式使用請(qǐng)求類:
<?php
namespace app\controller;
use app\request\MyRequest;
use support\Response;
class IndexController
{
public function index(MyRequest $request)
{
// 驗(yàn)證通過后,可以直接使用請(qǐng)求對(duì)象的屬性
$id = $request->id;
$status = $request->status;
// 業(yè)務(wù)邏輯處理...
return json(['code' => 0, 'msg' => 'success', 'data' => [
'id' => $id,
'status' => $status
]]);
}
}
常用驗(yàn)證規(guī)則
本擴(kuò)展包內(nèi)置了ThinkPHP驗(yàn)證器的所有驗(yàn)證規(guī)則,以下是一些常用的驗(yàn)證規(guī)則:
規(guī)則 | 說明 | 示例 |
---|---|---|
require | 必須填寫 | 'name' => 'require' |
number | 必須是數(shù)字 | 'age' => 'number' |
integer | 必須是整數(shù) | 'count' => 'integer' |
float | 必須是浮點(diǎn)數(shù) | 'price' => 'float' |
boolean | 必須是布爾值 | 'status' => 'boolean' |
必須是郵箱格式 | 'email' => 'email' | |
array | 必須是數(shù)組 | 'tags' => 'array' |
date | 必須是日期格式 | 'birthday' => 'date' |
alpha | 必須是字母 | 'name' => 'alpha' |
alphaNum | 必須是字母和數(shù)字 | 'account' => 'alphaNum' |
alphaDash | 必須是字母、數(shù)字、下劃線或破折號(hào) | 'username' => 'alphaDash' |
chs | 必須是中文 | 'name' => 'chs' |
chsAlpha | 必須是中文或字母 | 'name' => 'chsAlpha' |
chsAlphaNum | 必須是中文、字母或數(shù)字 | 'name' => 'chsAlphaNum' |
chsDash | 必須是中文、字母、數(shù)字、下劃線或破折號(hào) | 'name' => 'chsDash' |
url | 必須是URL地址 | 'website' => 'url' |
ip | 必須是IP地址 | 'ip' => 'ip' |
mobile | 必須是手機(jī)號(hào)碼 | 'mobile' => 'mobile' |
idCard | 必須是身份證號(hào)碼 | 'idcard' => 'idCard' |
zipCode | 必須是郵政編碼 | 'zipcode' => 'zipCode' |
in | 必須在范圍內(nèi) | 'type' => 'in:1,2,3' |
notIn | 必須不在范圍內(nèi) | 'type' => 'notIn:1,2,3' |
between | 必須在范圍內(nèi) | 'age' => 'between:18,60' |
notBetween | 必須不在范圍內(nèi) | 'age' => 'notBetween:0,17' |
length | 長(zhǎng)度必須在范圍內(nèi) | 'name' => 'length:2,20' |
max | 最大長(zhǎng)度 | 'name' => 'max:20' |
min | 最小長(zhǎng)度 | 'password' => 'min:6' |
after | 必須在日期之后 | 'begin_time' => 'after:2020-01-01' |
before | 必須在日期之前 | 'end_time' => 'before:2030-01-01' |
confirm | 必須和指定字段相同 | 'repassword' => 'confirm:password' |
different | 必須和指定字段不同 | 'nickname' => 'different:username' |
eq | 必須等于指定值 | 'status' => 'eq:1' |
neq | 必須不等于指定值 | 'status' => 'neq:0' |
gt | 必須大于指定值 | 'age' => 'gt:18' |
lt | 必須小于指定值 | 'age' => 'lt:60' |
egt | 必須大于等于指定值 | 'age' => 'egt:18' |
elt | 必須小于等于指定值 | 'age' => 'elt:60' |
regex | 必須滿足正則表達(dá)式 | 'zip' => 'regex:/^\d{6}$/' |
總結(jié)
hollisho/webman-request
擴(kuò)展包為Webman框架提供了一個(gè)強(qiáng)大而靈活的請(qǐng)求驗(yàn)證解決方案,通過依賴注入的方式自動(dòng)驗(yàn)證請(qǐng)求參數(shù),使代碼更加簡(jiǎn)潔和易于維護(hù)。它支持多種驗(yàn)證規(guī)則、自定義驗(yàn)證規(guī)則、驗(yàn)證場(chǎng)景等高級(jí)功能,能夠滿足各種復(fù)雜的驗(yàn)證需求。
參考鏈接
特別說明
特別說明
由于thinkphp驗(yàn)證器的原因,本擴(kuò)展包不支持php8.0以上的版本,請(qǐng)?jiān)谑褂们按_認(rèn)您的PHP版本。- 本擴(kuò)展包僅提供了基本的請(qǐng)求驗(yàn)證功能,對(duì)于更復(fù)雜的驗(yàn)證需求,您可以根據(jù)實(shí)際情況自行擴(kuò)展。(例如場(chǎng)景的支持目前尚未支持)