2022-01-09 14:01:11 +08:00
|
|
|
<?php
|
|
|
|
|
/**
|
|
|
|
|
* Created by PhpStorm.
|
|
|
|
|
* User: whwyy
|
|
|
|
|
* Date: 2018/4/3 0003
|
|
|
|
|
* Time: 17:04
|
|
|
|
|
*/
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
|
|
|
|
namespace validator;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class LengthValidator extends BaseValidator
|
|
|
|
|
{
|
|
|
|
|
|
2023-12-18 15:01:09 +08:00
|
|
|
const string MAX_LENGTH = 'max';
|
|
|
|
|
const string MIN_LENGTH = 'min';
|
2022-01-09 14:01:11 +08:00
|
|
|
|
2023-12-18 15:04:17 +08:00
|
|
|
/**
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
|
|
|
|
public string $method = 'default';
|
2022-01-09 14:01:11 +08:00
|
|
|
|
2023-07-07 17:24:03 +08:00
|
|
|
/**
|
2023-12-18 15:01:09 +08:00
|
|
|
* @param mixed $value
|
2023-07-07 17:24:03 +08:00
|
|
|
* @return bool
|
|
|
|
|
*/
|
2023-12-19 14:51:13 +08:00
|
|
|
public function trigger(mixed $value): bool
|
2023-12-18 15:01:09 +08:00
|
|
|
{
|
|
|
|
|
return match ($this->method) {
|
|
|
|
|
self::MAX_LENGTH => $this->maxLength((string)$value),
|
|
|
|
|
self::MIN_LENGTH => $this->minLength((string)$value),
|
|
|
|
|
default => $this->defaultLength((string)$value),
|
|
|
|
|
};
|
|
|
|
|
}
|
2022-01-09 14:01:11 +08:00
|
|
|
|
2023-07-07 17:24:03 +08:00
|
|
|
/**
|
2023-12-18 15:01:09 +08:00
|
|
|
* @param string $value
|
2023-07-07 17:24:03 +08:00
|
|
|
* @return bool
|
|
|
|
|
*
|
|
|
|
|
* 效验长度是否大于最大长度
|
|
|
|
|
*/
|
2023-12-18 15:01:09 +08:00
|
|
|
private function maxLength(string $value): bool
|
|
|
|
|
{
|
|
|
|
|
return mb_strlen($value) <= $this->value;
|
|
|
|
|
}
|
2022-01-09 14:01:11 +08:00
|
|
|
|
2023-07-07 17:24:03 +08:00
|
|
|
/**
|
2023-12-18 15:01:09 +08:00
|
|
|
* @param string $value
|
2023-07-07 17:24:03 +08:00
|
|
|
* @return bool
|
|
|
|
|
*
|
|
|
|
|
* 效验长度是否小于最小长度
|
|
|
|
|
*/
|
2023-12-18 15:01:09 +08:00
|
|
|
private function minLength(string $value): bool
|
|
|
|
|
{
|
|
|
|
|
return mb_strlen($value) >= $this->value;
|
|
|
|
|
}
|
2022-01-09 14:01:11 +08:00
|
|
|
|
2023-07-07 17:24:03 +08:00
|
|
|
/**
|
2023-12-18 15:01:09 +08:00
|
|
|
* @param string $value
|
2023-07-07 17:24:03 +08:00
|
|
|
* @return bool
|
|
|
|
|
*
|
|
|
|
|
* 效验长度是否小于最小长度
|
|
|
|
|
*/
|
2023-12-18 15:01:09 +08:00
|
|
|
private function defaultLength(string $value): bool
|
|
|
|
|
{
|
|
|
|
|
return mb_strlen($value) == $this->value;
|
|
|
|
|
}
|
2022-01-09 14:01:11 +08:00
|
|
|
}
|