Search by

youloge / webman-tool

youfeed

Webman plugin youloge/webman-tool

Package info

github.com/youfeed/webman-tool

pkg:composer/youloge/webman-tool

Statistics

Installs: 21

Dependents: 0

Suggesters: 0

Stars: 8

Open Issues: 0

v2.1.0 2026-09-11 21:38 UTC

README

Brightgreen Packagist Languages Packagist Downloads License

使用前看一下下面辅助函数:尤其注意函数名称问题

函数名 名称 使用场景
useLock 排它锁 并发抢占
useCache 缓存器 缓存读写支持多模式
useLimit 限速器 支持固定/滑动窗口
useIncrBy 自增器 封装成一个函数
useQueue 队列封装 方便调用
useRequest 异步请求 方便调用
headRequest HEAD请求 方便调用
httpProxy 代理请求 方便调用
virtualFile 文件上传 虚拟生成文件
apiMeilisearch 搜索请求封装 方便调用
vipMeilisearch 搜索管理封装 方便调用
useAuthenticator TOTP认证器 支持生成验证返回多合一
---- 算法相关 ----
useBase32 生成指定长度字符 使用用来生成验证码
useBase58 短码加解码 适合生成短码(同个数字生成短码也不相同)
useBase64_encode 安全Base64编码 方便调用
useBase64_decode 安全Base64解码 方便调用
useAES128 加解密封装 方便调用
useAES256 加解密封装 方便调用
useYouloge 洋葱加密 适合各种Token签发
---- 七牛相关 ----
useQiniu 七牛管理请求体 新版
useQiniuQbox 七牛管理请求体 旧版
useQiniuToken 七牛上传Token 方便调用
useQiniuDownload 七牛下载签名 方便调用
---- 支付与非对称 ----
usePrivateKeySign 私钥签名 方便调用
usePublicKeyVerify 公钥验签 方便调用
useTencentRequest 腾讯云请求体 一个函数搞定腾讯云API调用
useWeixinPayRequest 微信支付请求体 一个函数搞定微信支付API调用
useWeixinPayVerify 微信支付回调验证 方便调用
useWeixinPayDecryptV3 微信支付V3解码 方便调用
useAliPayRequest 支付宝支付请求体 一个函数搞定支付包支付API调用
useAliPayVerify 支付宝回调验签 方便调用

安装使用

composer require youloge/webman-tool

  • 如果要使用 onRequest 请求封装 请安装composer require workerman/http-client
  • 如果要使用 onQueue 队列封装 请安装composer require workerman/redis-queue
  • 已经内置函数 ini()useValidate() 安装本插件那二个插件可以不用安装

配置文件

配置位置:config\plugin\youloge\tools\app.php

<?php
$config = [
    'enable' => true,
    'meilisearch' => [],
    'qiniu01'=>['ak'=>'','sk'=>'']
    ...
];
$config['1232456']['cert'] =  <<<EOT
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
EOT;

return $config;

项目地址

Github Youloge.Tool Star 我 有帮助的话,记得给个star 能提交点代码最好

  • 2.1.0 [2026-09-12] 新增headRequest,useBase32
  • 2.0.4 [2026-09-12] 修正包命名为webman-tool
  • 2.0.1 [2026-09-11] 全新V2版本 一般已use开头
  • 1.0.0 [2025-03-15]-[2026-03-11] V1版本不在更新先升级为全新V2版本

示例代码 - 辅助辅助 函数还是要配合代码食用才香~

示例:表单输入验证器 查看使用详情文档 webman.validate

Redis排它锁 - useLock

  • @param string $key 实际key为Lock:$key
  • @param int|string $param 默认10 传秒数加锁 字符串解锁(只能解锁自己的锁)
  • @return bool|string 加锁成功返回token,失败false 解锁是返回bool
$token = useLock('y',20); 获取一个20秒的锁
useLock('y',$token); 解锁

Redis缓存读写与自增器 - useCache

  • @param string $key 实际key为Cache:$key
  • @param string|array $params 默认read 模式参数 read=读取 once=读并删除 incr=计数器自增 ttl=查看剩余有效期
  • @param int $expire=300 写入时为缓存有效期; incr模式下代表自增步长(默认步长1)
useCache('y',['x'=>100,'y'=>200],600); // 缓存一个对象 有效期600秒
useCache('y'); // 读取缓存对象
useCache('y','ttl'); // 查看剩余有效期
useCache('y','once'); // 读取缓存对象并删除对象
useCache('x',100); // 缓存一个对象 有效期300秒
useCache('x','incr',5); // 给缓存对象自增5 105

Redis 限速器 - useLimits

  • @param string $key 限速键名 实际key为limits:$key
  • @param int $limit 限速次数
  • @param int $ttl 过期时间
  • @param int $locking 锁定时间 >0 则为滑动窗口锁定模式
  • @return bool true=放行 false=超限
useLimits('y'); // 60秒内最多1次
useLimits('y',10,300); // 300秒内最多10次
useLimits('y',10,300,20); // 300秒内最多10次 每次锁定20秒 (每20秒放行1个 总放行不超10次)

Redis 自增器 - useIncrBy

  • 实际key为Youloge:UUIDHash表$name
  • @param string $name 自增器名称
  • @param int $step 自增步长
useIncrBy('y'); // 默认步长1
useIncrBy('y',10); // 增长10
useIncrBy('y',-5); // 减少5

美丽说搜索 - apiMeilisearch查询 + vipMeilisearch管理

  • @param string $route 路由
  • @param array $params 参数
  • @param string $method 方法
  • @return array|string 返回数据
vipMeilisearch('version'); // 获取版本信息
apiMeilisearch("indexes/video/search", ['q'=>'*'], 'POST'); // 查询视频

队列封装 - useQueue

  • @param string $name 队列名称
  • @param array $data 数据
  • @param int|null $delay 可选:延迟时间
  • @return int 1 成功 0 失败
useQueue('y',['x'=>100,'y'=>200]); // 添加数据到 y 队列
useQueue('y',['x'=>100,'y'=>200],10); // 添加数据到 y 队列 10秒后消费

2FA认证器 - useAuthenticator

标准 TOTP 令牌 RFC6238

  • @param string $secret Base32编码的密钥
  • @param int|null $time 可选:时间戳。默认为null,表示当前时间。
  • @return array 返回三组验证码
useAuthenticator('account:issuer'); // 返回一组 TOTP参数对(含密钥)
useAuthenticator('GQBWBS7AAEBECCUJ'); // 返回当前时间戳的验证码(3组)
useAuthenticator('GQBWBS7AAEBECCUJ',1741877199); // 返回指定时间戳的验证码
useAuthenticator('GQBWBS7AAEBECCUJ','123456'); // 验证'123456' 是否在当前时间戳的验证码范围

异步网络请求封装 - useRequest

  • 使用的是:http-client
  • @param string $url 请求网址
  • @param array $options 请求配置
  • 请求返回 返回 [JOSN] 非对象返回 [raw=响应内容]
  • 错误返回 ['err'=>500,'msg'=>'错误信息']
useRequest('https://example.com/',['method' => 'POST','headers'=>[]])

HTTP代理网络请求 - httpProxy

使用的curl 以后改为workerman-http-client

  • @param string $url 请求网址
  • @param array $options 请求配置
  • 请求返回 返回 [JOSN] 非对象返回 [raw=响应内容]
  • 错误返回 ['err'=>500,'msg'=>'错误信息']
httpProxy('https://example.com/',['method' => 'POST','headers'=>[]]); // 与 useRequest 一样使用

HEAD请求 - headRequest

用来判断网址联通情况或者判断文件是否存在等

  • @param string $url 完整URL
  • @param array $options 请求参数(如headers)
  • @return array
  • 成功 ['Headers'=>[], 'Request'=>[]]
  • 失败 ['err'=>500,'msg'=>'错误信息']
headRequest('https://example.com/',['headers'=>[]]); // 与 useRequest 一样使用

虚拟文件上传 - useVirtualFile

  • @param string $url 上传地址
  • @param array $files 文件类型数据 ['表单名称'=>['name'=>'文件名称','mime'=>'文件类型','data'=>'数据内容']]
  • @param array $body 其他表单数据
  • @param array $header 其他表单请求头
  • @return mixed 上传结果
  • 错误返回 ['err'=>500,'msg'=>'错误信息']
useVirtualFile('https://upload.com/',[['file'=>['name'=>'test.txt','mime'=>'text/plain','data'=>'test data']]]);

算法相关

返回指定长度Base32 - useBase32

  • 适用于:验证码随机字符场景
  • @param int $len 长度 默认5
  • @return string Base32字符串
$uuid = useBase32(6); // 返回6位Base32字符串

Base58编码解码 - useBase58

  • @param int|string $input int:编码数字 string:解码字符串
  • @param int $digits 随机混淆盐位数,默认3
  • @return int|string 编码数字|解码字符串
$uuid = useIncrBy('uuid'); // 自增生成唯一ID
$encode = useBase58($uuid); // 数字输入 输出短编码
$decode = useBase58($encode); // 短编码输入 输出数字

$decode === $uuid // true

安全Base64编码 - useBase64_encode

  • @param string $string 待编码的字符串 @return string 编码后的字符串
useBase64_encode('123') //

安全Base64解码 - useBase64_decode

  • @param string $data 待解码的数据
  • @param bool $strict 默认false 是否丢弃非Base64字符
  • @return string|false
useBase64_decode('ABC')

AES128加解密 - useAES128

(AES-128-CBC)封装方便使用: 注意输入类型

  • @param string|array $input array=加密(数组转json加密),string=解密(传入加密串)
  • @param string $salt 密钥盐 默认空
  • @param string $info 标记用途 默认空
  • @return array|string|false 加密返回safe-base64字符串;解密返回原数组;失败false
useAES128('ABC','123') // 解密模式
useAES128(['x'=>100],'123') // 加密模式

AES256加解密 - useAES256

(AES-256-CBC)封装方便使用: 注意输入类型

  • @param string|array $input array=加密(数组转json加密),string=解密(传入加密串)
  • @param string $salt 密钥盐 默认空
  • @param string $info 标记用途 默认空
  • @return array|string|false 加密返回safe-base64字符串;解密返回原数组;失败false
useAES256('ABC','123') // 解密模式
useAES256(['x'=>100],'123') // 加密模式

Youloge加解密 - useYouloge

平台专用洋葱加解密 (不包含签名生成算法Sign仅由平台内部使用)

  • @param string|array $input 待加解密的数据
  • @param string|null $info 签名密钥标记 默认onion:hmac-v1 如果配置为null 表示跳过HMAC签名校验(用于解密官方数据)
  • @param string $appid 配置参数主键 默认youloge
  • @return string|array|false 加密返回safe-base64字符串;解密返回原字符串;失败false
useYouloge(['x'=>100]); // 加密模式 输入数组
useYouloge('ABC'); // 解密模式 输入字符串
useYouloge('ABC',null); // 解密官方数据 例如ACCESS_TOKEN PAYLOAD

腾讯云请求体 - useTencentRequest

  • 构造腾讯云请求体: TC3-HMAC-SHA256
  • @param string $method 请求方式 GET/POST
  • @param string $endpoint_action_version_region 接入点/方法/版本/区域
  • @param array $payload 请求载体 无参数时 设为[],null,false,0 即可
  • @param string $appid 选择那个商户id下得的证书
$payload = [ 'PhoneNumberSet'=>['+8617605509012'] ];
$options = tencent_request('POST','sms.tencentcloudapi.com/DescribePhoneNumberInfo/2021-01-11/ap-nanjing',$payload,'1253985496');
$request = useRequest(...$options); // 异步请求
$request = httpProxy(...$options); // 代理请求

七牛相关 [配置文件读取 qiniu.ak qiniu.sk]

七牛管理请求体 - useQiniu

  • @param string $method 请求方式 GET/POST/PUT/DELETE
  • @param string $uri 请求网址路径
  • @param array $query 查询参数
  • @param array|string $body 请求内容
  • @param string $appid 配置参数主键 默认qiniu
$$options = useQiniu('GET','uc.qiniuapi.com/bucketTagging?bucket=<BucketName>'); // 查询<BucketName>的标签
$request = useRequest(...$options); // 异步请求

七牛管理请求体(老版) - useQiniuQbox

  • @param string $method 请求方式 GET/POST/PUT/DELETE
  • @param string $uri 请求网址路径
  • @param array $query 查询参数
  • @param array|string $body 请求内容
  • @param string $appid 配置参数主键 默认qiniu
useQiniuQbox('GET','uc.qiniuapi.com/bucketTagging?bucket=<BucketName>'); // 查询<BucketName>的标签

七牛云上传凭证 - useQiniuToken

  • @param array $params 待签名数组对象
  • @param string $appid 配置参数主键 默认qiniu
  • @return string 返回上传Token
useQiniuToken([
    'scope' => '<BucketName>:<Key>',
    'deadline' => time() + 3600
]);

七牛云下载链接 - useQiniuDownload

  • @param string $url 待签名下载网址
  • @param int $second 可选:设置有效时间 默认3600秒
  • @param string $attname 可选:设置下载文件名 默认没有
  • @return string 返回签名后的下载网址
useQiniuDownload('https://example.com/1.jpg');
useQiniuDownload('https://example.com/1.jpg',500);
useQiniuDownload('https://example.com/1.jpg',500,'x.jpg');

算法类

私钥签名 - usePrivateKeySign

  • @param string $string 待签名字符串
  • @param string $appid 选择那个id下得的证书
  • 返回数组 成功 [err=>200,data=>base64] 失败 [err=>500,msg=>'签名错误']
usePrivateKeySign('123','1253985496');

公钥验签 - usePublicKeyVerify

  • @param string $string 待签名字符串
  • @param string $Signature 待验签签名
  • @param string $appid 选择那个id下得的证书
  • 返回数组 成功 [err=>200,data=>base64] 失败 [err=>500,msg=>'签名错误']
usePublicKeyVerify('123','123','1253985496');

微信支付请求体构造 - useWeixinPayRequest

  • @param string $method 请求网络方式 GET/POST
  • @param string $router 请求网络路径 必须'/'开头
  • @param array $data JSON数据 不传设置为 '' false 0 即可
  • @param string $appid 选择那个商户id下得的证书
  • @return array 返回请求体数组
useWeixinPayRequest('GET','/v3/certificates',[],'1253985496')

微信支付回调验证 - useWeixinPayVerify

  • 微信支付回调验证
  • @param object $request Request 给返回对象传进来
  • @param string $appid 选择那个商户id下得的证书
  • @return array 成功返回 对象返回JSON 否则返回 []
  • @return array 失败返回 ['err'=>500,'msg'=>Exception]
useWeixinPayVerify($request,'1253985496')

微信支付解密V3 - useWeixinPayDecryptV3

  • @param array $encrypt 解密数据 要有['ciphertext','nonce','associated_data']
  • @param string $mchid 选择那个商户id下得的证书
  • 成功返回 对象返回JSON 否则返回 ['raw'=>$raw]
  • 失败返回 ['err'=>500,'msg'=>Exception]
useWeixinPayDecryptV3(); // 

支付宝支付请求体构造 - useAliPayRequest

  • @param string $method 接口名称 alipay.trade.create ...
  • @param array $data 请求参数(公共参数可以在这里覆盖)
  • @param string $appid 选择那个商户id下得的证书
useAliPayRequest(`alipay.trade.create`,[
    'biz_content'=>[
        // 支付参数
    ],
    'notify_url'=>'https://a.com'
],12345678); // 返回请求 options

支付宝支付回调验证 - useAliPayVerify

支付验证公钥是固定的:请在配置文件中配置

  • @param object $request Request 给返回对象传进来
  • @param string $appid 选择那个商户id下得的证书
  • 成功返回 对象返回JSON 否则返回 []
  • 失败返回 ['err'=>500,'msg'=>Exception]
useAliPayVerify($request,'alipay');

但行好事 莫问前程

wallet.micateam