3
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
|
||||
namespace support\OpenImSdk\Core;
|
||||
|
||||
use support\OpenImSdk\Exception\ValidatorException;
|
||||
|
||||
class Validator
|
||||
{
|
||||
/**
|
||||
* 验证规则
|
||||
* @var string[]
|
||||
*/
|
||||
private static $rules = [
|
||||
'userID' => 'max:64',
|
||||
'userID1' => 'max:64',
|
||||
'userID2' => 'max:64',
|
||||
'ownerUserID' => 'max:64',
|
||||
'friendUserID' => 'max:64',
|
||||
'blackUserID' => 'max:64',
|
||||
'fromUserID' => 'max:64',
|
||||
'toUserID' => 'max:64',
|
||||
'sendID' => 'max:64',
|
||||
'recvID' => 'max:64',
|
||||
'inviterUserID' => 'max:64',
|
||||
'nickname' => 'max:255',
|
||||
'faceURL' => 'max:255',
|
||||
'gender' => 'in:1,2',
|
||||
'groupID' => 'max:64',
|
||||
'groupName' => 'max:255',
|
||||
'introduction' => 'max:255',
|
||||
'notification' => 'max:255',
|
||||
'groupType' => 'in:0,1,2',
|
||||
'oldOwnerUserID' => 'max:64',
|
||||
'newOwnerUserID' => 'max:64',
|
||||
'conversationID' => 'max:128',
|
||||
'handleResult' => 'in:1,2',
|
||||
];
|
||||
|
||||
/**
|
||||
* 验证数组
|
||||
* @param array $data 要验证的数据
|
||||
* @return array 验证后的数据
|
||||
* @throws ValidatorException
|
||||
*/
|
||||
public static function validateArray(array $data): array
|
||||
{
|
||||
foreach ($data as $field => $value) {
|
||||
foreach (self::$rules as $key => $rules) {
|
||||
if ($field == $key) {
|
||||
$ruleList = explode('|', $rules);
|
||||
foreach ($ruleList as $rule) {
|
||||
$ruleParts = explode(':', $rule);
|
||||
$method = $ruleParts[0];
|
||||
$param = $ruleParts[1] ?? null;
|
||||
self::$method($field, $value, $param);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 长度最大验证
|
||||
* @param string $field 字段名
|
||||
* @param mixed $value 字段值
|
||||
* @param int $maxLength 最大长度
|
||||
* @throws ValidatorException
|
||||
*/
|
||||
private static function max(string $field, $value, $maxLength)
|
||||
{
|
||||
if (strlen($value) > (int)$maxLength) {
|
||||
throw new ValidatorException("参数 {$field} 长度不能超过 {$maxLength} 位");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 枚举值验证
|
||||
* @param string $field 字段名
|
||||
* @param mixed $value 字段值
|
||||
* @param string $allowedValues 允许的值(逗号分隔)
|
||||
* @throws ValidatorException
|
||||
*/
|
||||
private static function in(string $field, $value, $allowedValues)
|
||||
{
|
||||
$allowed = explode(',', $allowedValues);
|
||||
if (!in_array($value, $allowed)) {
|
||||
throw new ValidatorException("参数 {$field} 的值必须是以下之一: {$allowedValues},当前值: {$value}");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user