Files
kiri-validator/LengthValidator.php
T

71 lines
1.5 KiB
PHP
Raw Normal View History

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 string $field
* @param mixed $value
2023-07-07 17:24:03 +08:00
* @return bool
*/
2023-12-18 15:01:09 +08:00
public function trigger(string $field, mixed $value): bool
{
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
}