diff --git a/Validator/ArrayValidator.php b/Validator/ArrayValidator.php deleted file mode 100644 index 232e1fe2..00000000 --- a/Validator/ArrayValidator.php +++ /dev/null @@ -1,70 +0,0 @@ -getParams(); - if (empty($param) || !is_array($param)) { - return true; - } - if (!isset($param[$this->field])) { - return true; - } - if (!is_array($param[$this->field])) { - return $this->addError("The param :attribute must a array"); - } - return true; - } - - /** - * @param $data - * @return array - * - * 转成数组 - */ - private function toArray($data): array - { - if (is_numeric($data)) { - return []; - } else if (is_null(json_decode($data, true))) { - return []; - } elseif (is_object($data)) { - $data = get_object_vars($data); - } - - $_tmp = []; - foreach ($data as $key => $val) { - if (is_object($val)) { - $_tmp[$key] = $this->toArray($val); - } else if (is_array($val)) { - $_tmp[$key] = $this->toArray($val); - } else { - $_tmp[$key] = $val; - } - } - - return $_tmp; - } - -} diff --git a/Validator/BaseValidator.php b/Validator/BaseValidator.php deleted file mode 100644 index 3121fa1f..00000000 --- a/Validator/BaseValidator.php +++ /dev/null @@ -1,134 +0,0 @@ -model = $model; - } - - /** - * @return ActiveRecord|null - */ - public function getModel(): ?ActiveRecord - { - return $this->model; - } - - - /** - * BaseValidator constructor. - * @param array $config - */ - public function __construct(array $config = []) - { - $this->regConfig($config); - } - - - /** - * @param $config - */ - private function regConfig($config) - { - if (empty($config) || !is_array($config)) { - return; - } - foreach ($config as $key => $val) { - $this->$key = $val; - } - } - - /** - * @throws Exception - * @return bool - */ - public function trigger(): bool - { - throw new Exception('Child Class must define method of trigger'); - } - - /** - * @return array - */ - protected function getParams(): array - { - return $this->params; - } - - /** - * @param array $data - * @return $this - */ - public function setParams(array $data): static - { - $this->params = $data; - return $this; - } - - /** - * @param $message - * @return bool - */ - public function addError($message): bool - { - $this->isFail = FALSE; - - $message = str_replace(':attribute', $this->field, $message); - - $this->message = $message; - - return $this->isFail; - } - - /** - * @return string - */ - public function getError(): string - { - return $this->message; - } - - /** - * @param $name - * @param $value - * @throws Exception - */ - public function __set($name, $value) - { - $method = 'set' . ucfirst($name); - if (method_exists($this, $method)) { - $this->$method($value); - } else if (property_exists($this, $name)) { - $this->$name = $value; - } else { - throw new Exception('unknown property ' . $name . ' in class ' . static::class); - } - } -} diff --git a/Validator/DateTimeValidator.php b/Validator/DateTimeValidator.php deleted file mode 100644 index 6fe093fa..00000000 --- a/Validator/DateTimeValidator.php +++ /dev/null @@ -1,128 +0,0 @@ -getParams(); - if (empty($param) || !is_array($param)) { - return true; - } - if (!isset($param[$this->field]) || empty($param[$this->field])) { - return true; - } - $value = $param[$this->field]; - switch (strtolower($this->method)) { - case self::DATE: - return $this->validatorDate($value); - case self::DATE_TIME: - return $this->validateDatetime($value); - case self::TIME: - return $this->validatorTime($value); - case self::STR_TO_TIME: - return $this->validatorTimestamp($value); - default: - return true; - } - } - - /** - * @param $value - * @return bool - * - * 效验分秒 格式如 01:02 or 01-02 - */ - public function validatorTime($value): bool - { - if (empty($value) || !is_string($value)) { - return $this->addError('The param :attribute not is a date value'); - } - $match = preg_match('/^[0-5]?\d{1}.{1}[0-5]?\d{1}$/', $value, $result); - if ($match && $result[0] == $value) { - return true; - } else { - return $this->addError('The param :attribute format error'); - } - } - - - /** - * @param $value - * @return bool - * - * 效验分秒 格式如 2017-12-22 01:02 - */ - public function validateDatetime($value): bool - { - if (empty($value) || !is_string($value)) { - return $this->addError('The param :attribute not is a date value'); - } - $match = '/^\d{4}\-\d{2}\-\d{2}\s+\d{2}:\d{2}:\d{2}$/'; - $match = preg_match($match, $value, $result); - if ($match && $result[0] == $value) { - return true; - } else { - return $this->addError('The param :attribute format error'); - } - } - - /** - * @param $value - * @return bool - * - * 效验分秒 格式如 2017-12-22 - */ - public function validatorDate($value): bool - { - if (empty($value) || !is_string($value)) { - return $this->addError('The param :attribute not is a date value'); - } - $match = preg_match('/^(\d{4}).*([0-12]).*([0-31]).*$/', $value, $result); - if ($match && $result[0] == $value) { - return true; - } else { - return $this->addError('The param :attribute format error'); - } - } - - /** - * @param $value - * @return bool - * - * 效验时间戳 格式如 1521452254 - */ - public function validatorTimestamp($value): bool - { - if (empty($value) || !is_numeric($value)) { - return $this->addError('The param :attribute not is a timestamp value'); - } - if (strlen((string)$value) != 10) { - return $this->addError('The param :attribute not is a timestamp value'); - } - if (!date('YmdHis', $value)) { - return $this->addError('The param :attribute format error'); - } - return true; - } -} diff --git a/Validator/EmailValidator.php b/Validator/EmailValidator.php deleted file mode 100644 index 6ec3df78..00000000 --- a/Validator/EmailValidator.php +++ /dev/null @@ -1,35 +0,0 @@ -getParams(); - if (empty($param) || !isset($param[$this->field])) { - return true; - } else { - $value = $param[$this->field]; - if (preg_match('/^[a-zA-Z0-9]+([\.\_]{1,})[a-zA-Z0-9]+@[a-zA-Z]+(\.\w+)+/', $value)) { - return true; - } else { - return $this->addError('The param :attribute format error'); - } - } - } - -} diff --git a/Validator/EmptyValidator.php b/Validator/EmptyValidator.php deleted file mode 100644 index de861da4..00000000 --- a/Validator/EmptyValidator.php +++ /dev/null @@ -1,55 +0,0 @@ -getParams(); - if (empty($param) || !isset($param[$this->field])) { - return $this->addError(':attribute not exists'); - } - - $value = $param[$this->field]; - - switch (strtolower($this->method)) { - case self::CAN_NOT_EMPTY: - if (strlen($value) < 1) { - return $this->addError('The :attribute can not empty.'); - } - break; - case self::CAN_NOT_NULL: - if ($value === null) { - return $this->addError('The :attribute can not is null.'); - } - break; - } - - return true; - } -} diff --git a/Validator/EnumValidator.php b/Validator/EnumValidator.php deleted file mode 100644 index b3ae8209..00000000 --- a/Validator/EnumValidator.php +++ /dev/null @@ -1,50 +0,0 @@ -getParams(); - if (empty($param) || !isset($param[$this->field])) { - return $this->addError('The param :attribute is null'); - } - $value = $param[$this->field]; - if (is_null($value)) { - return $this->addError('The param :attribute is null'); - } - - if (!is_array($this->value)) { - return true; - } - if (!in_array($value, $this->value)) { - return $this->addError($this->i()); - } - - return true; - } - - /** - * @return string - */ - private function i(): string - { - return 'The param :attribute value only in ' . implode(',', $this->value); - } - -} diff --git a/Validator/IntegerValidator.php b/Validator/IntegerValidator.php deleted file mode 100644 index 4afc8af5..00000000 --- a/Validator/IntegerValidator.php +++ /dev/null @@ -1,45 +0,0 @@ -getParams(); - if (empty($param) || !isset($param[$this->field])) { - return true; - } - - $value = $param[$this->field] ?? null; - if ($value === null) { - return $this->addError('The :attribute can not is null.'); - } - if ($this->type !== self::MIN && $value < $this->value) { - return $this->addError('The ' . $this->field . ' cannot be less than the default value.'); - } - - if ($this->type !== self::MAX && $value > $this->value) { - return $this->addError('The ' . $this->field . ' cannot be greater than the default value.'); - } - return true; - } -} diff --git a/Validator/LengthValidator.php b/Validator/LengthValidator.php deleted file mode 100644 index 9b5ef67a..00000000 --- a/Validator/LengthValidator.php +++ /dev/null @@ -1,115 +0,0 @@ -getParams(); - if (empty($param) || !isset($param[$this->field])) { - if ($this->method != self::MAX_LENGTH) { - return $this->addError('The param :attribute not exists'); - } else { - return TRUE; - } - } - $value = $param[$this->field]; - if (is_null($value)) { - return $this->addError('The param :attribute is null'); - } - return match (strtolower($this->method)) { - self::MAX_LENGTH => $this->maxLength($value), - self::MIN_LENGTH => $this->minLength($value), - default => $this->defaultLength($value), - }; - } - - /** - * @param $value - * @return bool - * - * 效验长度是否大于最大长度 - */ - private function maxLength($value): bool - { - if (is_array($value)) { - if (count($value) > $value) { - return $this->addError('The param :attribute length overflow'); - } - } else { - if (is_numeric($value) && strlen((string)$value) > $this->value) { - return $this->addError('The param :attribute length overflow'); - } - if (strlen($value) > $this->value) { - return $this->addError('The param :attribute length overflow'); - } - } - return TRUE; - } - - /** - * @param $value - * @return bool - * - * 效验长度是否小于最小长度 - */ - private function minLength($value): bool - { - if (is_array($value)) { - if (count($value) < $value) { - return $this->addError('The param :attribute length error'); - } - } else { - if (is_numeric($value) && strlen((string)$value) < $this->value) { - return $this->addError('The param :attribute length overflow'); - } - if (strlen($value) < $this->value) { - return $this->addError('The param :attribute length error'); - } - } - return TRUE; - } - - /** - * @param $value - * @return bool - * - * 效验长度是否小于最小长度 - */ - private function defaultLength($value): bool - { - if (is_array($value)) { - if (count($value) !== $value) { - return $this->addError('The param :attribute length error'); - } - } else { - if (is_numeric($value) && strlen((string)$value) !== $this->value) { - return $this->addError('The param :attribute length overflow'); - } - if (mb_strlen($value) !== $this->value) { - return $this->addError('The param :attribute length error; ' . mb_strlen($value) . ':' . $this->value); - } - } - return TRUE; - } -} diff --git a/Validator/RequiredValidator.php b/Validator/RequiredValidator.php deleted file mode 100644 index decf5ced..00000000 --- a/Validator/RequiredValidator.php +++ /dev/null @@ -1,33 +0,0 @@ -getParams(); - if (is_numeric($param)) { - return true; - } - if (empty($param) || !isset($param[$this->field])) { - return $this->addError('The param :attribute not exists'); - } else { - return true; - } - } - -} diff --git a/Validator/RoundValidator.php b/Validator/RoundValidator.php deleted file mode 100644 index 66fa63f8..00000000 --- a/Validator/RoundValidator.php +++ /dev/null @@ -1,34 +0,0 @@ -model->getAttribute($this->field); - if ($value == null || round($value, $this->value) != $value) { - return $this->addError('The param :attribute length error'); - } - return true; - } - - -} diff --git a/Validator/TypesOfValidator.php b/Validator/TypesOfValidator.php deleted file mode 100644 index 4c3586e4..00000000 --- a/Validator/TypesOfValidator.php +++ /dev/null @@ -1,149 +0,0 @@ - 'json', - self::FLOAT => 'float', - self::ARRAY => 'array', - self::STRING => 'string', - self::INTEGER => 'integer', - self::SERIALIZE => 'serialize', - ]; - - /** @var string */ - public string $method; - - - /** - * @return bool - */ - public function trigger(): bool - { - if (!in_array($this->method, $this->types)) { - return true; - } - - $param = $this->getParams(); - if (empty($param) || !isset($param[$this->field])) { - return true; - } - - $value = $param[$this->field]; - - $method = $this->method . 'Format'; - - if ($value === null) { - return $this->addError('This ' . $this->field . ' is not an empty data.'); - } - - return $this->{$method}($value); - } - - /** - * @param $value - * @return bool - */ - public function jsonFormat($value): bool - { - if (!is_string($value) || is_numeric($value)) { - return $this->addError('The ' . $this->field . ' not is JSON data.'); - } - if (is_null(json_decode($value))) { - return $this->addError('The ' . $this->field . ' not is JSON data.'); - } - return true; - } - - /** - * @param $value - * @return bool - */ - public function serializeFormat($value): bool - { - if (!is_string($value) || is_numeric($value)) { - return $this->addError('The ' . $this->field . ' not is serialize data.'); - } - if (false === swoole_unserialize($value)) { - return $this->addError('The ' . $this->field . ' not is serialize data.'); - } - return true; - } - - /** - * @param $value - * @return bool - */ - public function arrayFormat($value): bool - { - if (!is_array($value)) { - return $this->addError('The ' . $this->field . ' not is array data.'); - } - return true; - } - - /** - * @param $value - * @return bool - */ - public function stringFormat($value): bool - { - if (is_array($value) || is_object($value) || is_bool($value)) { - return $this->addError('The ' . $this->field . ' not is string data.'); - } - return true; - } - - /** - * @param $value - * @return bool - */ - public function integerFormat($value): bool - { - if (!is_numeric($value)) { - return $this->addError('The ' . $this->field . ' not is number data.'); - } - if ((int)$value != $value) { - return $this->addError('The ' . $this->field . ' not is number data.'); - } - - return true; - } - - /** - * @param $value - * @return bool - */ - public function floatFormat($value): bool - { - $trim = (float)$value; - if ($trim != $value || !is_float($trim)) { - return $this->addError('The ' . $this->field . ' not is float data.'); - } - return true; - } - -} diff --git a/Validator/UniqueValidator.php b/Validator/UniqueValidator.php deleted file mode 100644 index 2e423a35..00000000 --- a/Validator/UniqueValidator.php +++ /dev/null @@ -1,43 +0,0 @@ -getParams(); - if (empty($param) || !isset($param[$this->field])) { - return TRUE; - } - - if (empty($this->model)) { - return $this->addError('Model error.'); - } - - $model = $this->model; - if (!$this->model->getIsCreate()) { - return true; - } - if ($model::find()->where([$this->field => $param[$this->field]])->exists()) { - return $this->addError('The :attribute \'' . $param[$this->field] . '\' is exists!'); - } - return $this->isFail = TRUE; - } - - -} diff --git a/Validator/Validator.php b/Validator/Validator.php deleted file mode 100644 index b04c386b..00000000 --- a/Validator/Validator.php +++ /dev/null @@ -1,221 +0,0 @@ - [ - 'class' => 'validator\EmptyValidator', - 'method' => EmptyValidator::CAN_NOT_EMPTY, - ], - 'not null' => [ - 'class' => 'validator\EmptyValidator', - 'method' => EmptyValidator::CAN_NOT_NULL, - ], - 'required' => [ - 'class' => 'validator\RequiredValidator', - ], - 'enums' => [ - 'class' => 'validator\EnumValidator', - ], - 'unique' => [ - 'class' => 'validator\UniqueValidator', - ], - 'datetime' => [ - 'class' => 'validator\DatetimeValidator', - 'method' => DateTimeValidator::DATE_TIME, - ], - 'date' => [ - 'class' => 'validator\DatetimeValidator', - 'method' => DateTimeValidator::DATE, - ], - 'time' => [ - 'class' => 'validator\DatetimeValidator', - 'method' => DateTimeValidator::TIME, - ], - 'timestamp' => [ - 'class' => 'validator\DatetimeValidator', - 'method' => DateTimeValidator::STR_TO_TIME, - ], - 'string' => [ - 'class' => 'validator\TypesOfValidator', - 'method' => TypesOfValidator::STRING, - ], - 'int' => [ - 'class' => 'validator\TypesOfValidator', - 'method' => TypesOfValidator::INTEGER, - ], - 'min' => [ - 'class' => IntegerValidator::class - ], - 'max' => [ - 'class' => IntegerValidator::class - ], - 'json' => [ - 'class' => 'validator\TypesOfValidator', - 'method' => TypesOfValidator::JSON, - ], - 'float' => [ - 'class' => 'validator\TypesOfValidator', - 'method' => TypesOfValidator::FLOAT, - ], - 'array' => [ - 'class' => 'validator\TypesOfValidator', - 'method' => TypesOfValidator::ARRAY, - ], - 'serialize' => [ - 'class' => 'validator\TypesOfValidator', - 'method' => TypesOfValidator::SERIALIZE, - ], - 'maxLength' => [ - 'class' => 'validator\LengthValidator', - 'method' => 'max', - ], - 'minLength' => [ - 'class' => 'validator\LengthValidator', - 'method' => 'min', - ], - 'email' => [ - 'class' => 'validator\EmailValidator', - 'method' => 'email', - ], - 'length' => [ - 'class' => 'validator\LengthValidator', - 'method' => 'default', - ], - 'round' => [ - 'class' => 'validator\RoundValidator', - ], - ]; - - /** - * @return Validator|null - */ - public static function getInstance(): ?Validator - { - if (static::$instance == null) { - static::$instance = new Validator(); - } - return static::$instance; - } - - /** - * @param $field - * @param $rules - * @return $this - * @throws Exception - */ - public function make($field, $rules): static - { - if (!is_array($field)) { - $field = [$field]; - } - - $param = $this->getParams(); - $model = $this->getModel(); - foreach ($field as $val) { - $this->createRule($val, $rules, $model, $param); - } - - return $this; - } - - /** - * @param $field - * @param $rule - * @param $model - * @param $param - * @throws Exception - * ['maxLength'=>150, 'required', 'minLength' => 100] - */ - public function createRule($field, $rule, $model, $param) - { - $define = ['field' => $field]; - foreach ($rule as $key => $val) { - - if (!is_null($model)) { - if (is_string($val) && method_exists($model, $val)) { - $this->validators[] = [$model, $val]; - continue; - } - } - - if (is_string($key)) { - $type = strtolower($key); - $define['value'] = $val; - } else { - $type = strtolower($val); - } - - if (!isset($this->classMap[$type])) { - continue; - } - $constr = array_merge($this->classMap[$type], $define); - - /** @var BaseValidator $class */ - $class = Kiri::createObject($constr); - $class->setParams($param); - $class->setModel($model); - - $this->validators[] = $class; - } - } - - /** - * @return bool - * @throws Exception - */ - public function validation(): bool - { - if (count($this->validators) < 1) { - return true; - } - - foreach ($this->validators as $val) { - if ($this->check($val)) { - continue; - } - $isTrue = false; - if ($val instanceof BaseValidator) { - $this->addError($val->getError()); - } - break; - } - $this->validators = null; - $this->validators = []; - return !isset($isTrue); - } - - /** - * @param BaseValidator|array|Closure $val - * @return mixed - * @throws Exception - */ - private function check(BaseValidator|array|Closure $val): mixed - { - if (is_callable($val, true)) { - return call_user_func($val, $this); - } - return $val->trigger(); - } - -} diff --git a/composer.json b/composer.json index 2cd99390..d2ab6dae 100644 --- a/composer.json +++ b/composer.json @@ -38,9 +38,7 @@ "Kiri\\": "System/", "HttpServer\\": "HttpServer/", "Server\\": "Server/", - "validator\\": "Validator/", "Console\\": "Console/", - "Database\\": "Database/", "Gii\\": "Gii/", "Kafka\\": "Kafka/", "Rpc\\": "Rpc/",