国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman工具類(插件配置,TP驗證工具)

v2.4 版本
2023-08-09 版本更新時間
108 安裝
4 star

插件安裝

基于webman的工具:安裝

composer安裝組件命令如下:請在項目根目錄下執(zhí)行:

composer require wekyun/webman_lib

現(xiàn)在建議使用新版本:兼容PHP >= 7.2~php8.x
用法不變,是基于TP8的驗證器修改,并且自帶基礎默認規(guī)則,做了優(yōu)化
https://gitee.com/wekyun/webman_tool#webman_tool

composer鏡像切換

阿里云

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

華為云

composer config -g repo.packagist composer https://mirrors.huaweicloud.com/repository/php/

騰訊云

composer config -g repos.packagist composer https://mirrors.cloud.tencent.com/composer/

phpcomposer Composer官方鏡像(速度慢)

composer config -g repo.packagist composer https://packagist.phpcomposer.com

Packagist 中國全量鏡像(由安暢網(wǎng)絡贊助)

composer config -g repo.packagist composer https://php.cnpkg.org

Packagist / JP 日本鏡像(一個日本開發(fā)者搭建的鏡像)

composer config -g repo.packagist composer https://packagist.jp/

Packagist Mirror 上海交通大學鏡像

composer config -g repo.packagist composer https://packagist.mirrors.sjtug.sjtu.edu.cn/

Packagist 清華大學鏡像

composer config -g repo.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/

github代碼地址:希望大家給個星星鼓勵一下!

https://github.com/wekyun/webman_lib

更新說明:

插件更新:
v2.2:新增Token類和tool類
v2.0:
新增Req類,可以依賴注入使用,
$param = $request->setField('field')->checkAll('com', ['username.>請輸入賬號', 'password.>請輸入密碼', 'image_code.>請?zhí)顚戲炞C碼']);
截圖

v1.9更新:修改成自動加載webman各個插件自己的驗證配置使用,官方的驗證配置和各個的插件的配置隔離互不影響

1:插件配置保存功能

定義或者修改文件配置使用演示

工具是基于xiunobbs的文件配置修改,修改前備份,修改成功刪除備份,修改失敗回復備份。

因為webman是常駐內(nèi)存的框架,運行了修改配置的代碼,需要重啟服務,否則修改配置不會生效。

include './vendor/autoload.php';

$your_config_data = [
    'title' => 'my_plugin_config',
    'name' => 'web',
];
//第一個參數(shù):$your_config_data 需要修改或者新增定義的配置數(shù)據(jù)
//第二個參數(shù):你的插件名字,必須是你的插件名字
//第三個參數(shù):你插件的配置文件名,不需要.php結尾
\Wekyun\WebmanLib\WekConfig::setPluginConfigValue($your_config_data, 'demo', 'aliDianBoConfig');

2:插件參數(shù)驗證功能(快速接收參數(shù)驗證):tp驗證依賴不支持8.0以上

基于\think\Validate的驗證插件

使用此插件需要安裝TP的驗證器composer require topthink/think-validate

除了要跟TP一樣定義規(guī)則文件外,還需要在配置目錄下創(chuàng)建check.php配置文件,具體參考下面的使用前配置。

TP驗證器文檔:https://www.kancloud.cn/manual/thinkphp5_1/354102

項目開發(fā)中,除了數(shù)據(jù)庫操作以外,最常寫的代碼便是參數(shù)接收和數(shù)據(jù)校驗了。

很多程序員可能就簡單的接受了參數(shù),并不會去驗證數(shù)據(jù),或者有些程序員只是簡單的if去判斷一下,但是有時候有些字段必須要驗證,字段多了驗證數(shù)據(jù)就寫了很多的代碼,即便是使用\think\Validate的驗證器,也需要去麻煩一下。

作者跟你們一樣懶,但是又想讓項目的數(shù)據(jù)驗證規(guī)范起來,從最初的驗證層,到現(xiàn)在一個插件就搞定,這期間有一個代碼進化的過程。

現(xiàn)在把功能封裝成了插件貢獻大家使用,也希望各位在數(shù)據(jù)校驗這方面使用起來又簡單又方便。

參數(shù)接收

//需要先引入插件
use Wekyun\WebmanLib\Check;

//基礎使用:$param就是接收的參數(shù)
$param = Check::checkAll('com', ['name', 'age', 'sex']);
var_dump($param);

這里來解釋一下兩個參數(shù),第一個參數(shù)是com,第二個參數(shù)是一個數(shù)組

第一個參數(shù)com

這個參數(shù)是配置文件check.php中定義的,對應mapping的com別名。此文件需要在使用之前配置,如何配置看下面的使用前的配置,com是告訴插件,要使用哪個TP驗證規(guī)則文件的規(guī)則,你可以定義其他的規(guī)則文件,并在配置mapping中注冊別名。

'mapping' => [
        'com' => \app\common\validate\Common::class,
    ],

第二個參數(shù)數(shù)組

這第二個參數(shù)就是你要接收的參數(shù)字段了,如代碼這樣定義,就可以接受參數(shù),但是如果客戶端發(fā)送了沒有接收的參數(shù),也會被接收,如果想要接收自己指定的參數(shù)可以這么寫:

$param = Check::checkOnlyAll('com', ['name', 'age', 'sex']);
var_dump($param);

checkOnlyAll方法的意思就是驗證接收指定的字段,沒有指定的字段是不會接收的。

參數(shù)驗證與默認值

字段必傳(.)

必傳驗證很簡單,name. 寫法就是驗證name傳遞參數(shù)是否有值,0,null,false,都算是值,只有空字符串不算傳遞了參數(shù)。

Check::checkAll('com', ['name.', 'age', 'sex']);
默認值(:)

age:18 就是給了參數(shù)默認值,如果接受的參數(shù)這個字段沒有值或者沒傳,就會給指派的默認值。

需要注意的是,默認值和必傳不要同時寫

Check::checkAll('com', ['name.', 'age:18', 'sex']);
錯誤提示的字段別名(|)

name|用戶名 就是給字段name自定義了錯誤提示時的別名,如果字段name沒有傳遞,或者不符合驗證規(guī)則,就會提示用戶名怎么樣,如果不設置別名,就會提示name怎么樣。

使用時需要注意,|必須跟在字段name面,在必傳.的前面,否則無法正常使用。

Check::checkAll('com', ['name|用戶名.', 'age:18', 'sex']);
自定義完整必傳錯誤提示(>)

必傳字段name沒有傳遞,就會提示 請輸入用戶名,這在用戶端提交表單的時候,驗證必傳字段十分有效。

需要注意的是,自定義的提示信息優(yōu)先級不會大于TP的驗證錯誤提示,也就是說,如果在驗證規(guī)則文件中,設置了字段的其他錯誤驗證規(guī)則和驗證錯誤提示,那么驗證規(guī)則的驗證提示是優(yōu)先級最高的。

Check::checkAll('com', ['name.>請輸入用戶名', 'age:18', 'sex']);

使用規(guī)則總結

. 必傳

> 自定義必傳提示,常用戶前端字段友好提示

| 自定義字段錯誤提示的別名

: 設置默認值,此標識符和必傳字段的 .不可以同時使用,有沖突

在字段特別多的時候,驗證后寫字段的必傳時,這個插件非常香。

使用前的配置

需要在項目config目錄下創(chuàng)建一個check.php配置文件

├── app                           應用目錄
├── config                        配置目錄
│   ├── check.php                 check配置文件
├── public                        靜態(tài)資源目錄
├── process                       自定義進程目錄
├── runtime                       應用的運行時目錄,需要可寫權限
├── start.php                     服務啟動文件
├── vendor                        composer安裝的第三方類庫目錄
└── support                       類庫適配(包括第三方類庫)

在配置文件check.php中復制如下配置代碼:

<?php
//配置文件名要改成 check.php 放在webman項目的根目錄的config的根目錄下
return [
    //自定義錯誤的處理方法 $msg:錯誤提示   $err_code:錯誤碼
//    'err_func' => function ($msg, $err_code) {

//    },
    'err_code' => 203,//默認錯誤的錯誤碼
    //此配置為必須,配置需要使用的驗證場景類,需要按照目錄創(chuàng)建文件寫法參考TP的驗證器文檔
    'mapping' => [
        'com' => \app\common\validate\Common::class,
    ],
];

然后需要創(chuàng)建tp驗證器的驗證規(guī)則文件,在 app\common\validate 目錄下創(chuàng)建 Common.php 文件,代碼如下:

需要注意的是:tp驗證規(guī)則文件,必須在上一步的 check.php 配置文件的 mapping 中配置文件地址才能使用,\app\common\validate\Common::class的意思就是TP配置文件的命名空間地址,可以打印看下是什么就明白了。

<?php
//驗證起規(guī)則文件
namespace app\common\validate;

use think\Validate;

//驗證起規(guī)則文件demo,至少要定義,才能用插件
class Common extends Validate
{

    //書寫你驗證的字段,或者重新定義驗證類文件,并在check配置中的 mapping 定義驗證文件路徑

    protected $rule = [
        'id_card' => 'idCard',//驗證某個字段的值是否為有效的身份證格式
        'mobile' => 'mobile',//驗證某個字段的值是否為有效的手機
        'name' => ['max' => 25, 'regex' => '/^[\w|\d]\w+/'],
        'email' => 'email',
        'age' => 'number|between:1,120',//驗證某個字段的值是否在某個區(qū)間
        'info' => 'array',//驗證某個字段的值是否為數(shù)組
        'accept' => 'accepted',//驗證某個字段是否為為 yes, on, 或是 1。這在確認"服務條款"是否同意時很有用
        //支持正則驗證
        //'zip'=>'\d{6}',

    ];

    protected $message = [
    ];

}

另外插件的錯誤提示要接管框架的錯誤處理,根據(jù)自己的業(yè)務給前端提示錯誤
全局錯誤處理請參考http://www.wtbis.cn/a/1529
至此就可以使用了!

新增Token類:

        //Token::init 設置公鑰密鑰,長度要保持一致,否則多項目,其他語言無法解析
        Token::init('d5vp782flPgdktyFG76oH99OMKJe8245', '8NONw5a9P33ysWpM');

        $token_str = Token::make(['name' => 'wekyun', 'uid' => 1], 30);
        $token_array_data = Token::read($token_str);
        if (!$token_array_data) {
            //TODO 登錄已過期,或者token無效,需要重新登錄

        }
        var_dump($token_array_data);
贊助商