11 Commits

Author SHA1 Message Date
as2252258 76bd050ada 改名 2021-12-02 16:34:14 +08:00
as2252258 0e6a1b5ba2 改名 2021-12-02 16:33:46 +08:00
as2252258 10aa70eb03 改名 2021-12-02 16:31:41 +08:00
as2252258 b80833691e 改名 2021-12-02 16:29:54 +08:00
as2252258 4ac84b3edf 改名 2021-12-02 16:28:14 +08:00
as2252258 8e8bd0bd43 改名 2021-11-10 11:27:38 +08:00
as2252258 a1c7907146 改名 2021-11-10 11:25:18 +08:00
as2252258 3b15bc5e27 update composer.json. 2021-11-05 07:21:51 +00:00
as2252258 5c30ffd40f 改名 2021-10-25 16:39:56 +08:00
as2252258 97c07dabeb 改名 2021-10-09 16:48:19 +08:00
as2252258 2c6d216953 validator 2021-09-29 11:24:46 +08:00
5 changed files with 37 additions and 35 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "game-worker/validator",
"name": "game-worker/kiri-validator",
"description": "db",
"authors": [
{
+11 -8
View File
@@ -4,7 +4,7 @@ declare(strict_types=1);
namespace validator;
use Database\ActiveRecord;
use Database\Model;
use Exception;
abstract class BaseValidator
@@ -22,7 +22,7 @@ abstract class BaseValidator
protected array $params = [];
protected ?ActiveRecord $model = null;
protected ?Model $model = null;
/**
@@ -34,9 +34,9 @@ abstract class BaseValidator
}
/**
* @return ActiveRecord|null
* @return Model|null
*/
public function getModel(): ?ActiveRecord
public function getModel(): ?Model
{
return $this->model;
}
@@ -66,12 +66,12 @@ abstract class BaseValidator
}
/**
* @throws Exception
* @return bool
* @throws Exception
*/
public function trigger(): bool
{
throw new Exception('Child Class must define method of trigger');
throw new Exception('Child Class must define method of trigger');
}
/**
@@ -83,11 +83,14 @@ abstract class BaseValidator
}
/**
* @param array $data
* @param array|null $data
* @return $this
*/
public function setParams(array $data): static
public function setParams(?array $data): static
{
if (is_null($data)) {
$data = [];
}
$this->params = $data;
return $this;
}
+1 -4
View File
@@ -20,10 +20,7 @@ class RequiredValidator extends BaseValidator
public function trigger(): bool
{
$param = $this->getParams();
if (is_numeric($param)) {
return true;
}
if (empty($param) || !isset($param[$this->field])) {
if (!is_array($param) || !isset($param[$this->field])) {
return $this->addError('The param :attribute not exists');
} else {
return true;
+1 -1
View File
@@ -33,7 +33,7 @@ class UniqueValidator extends BaseValidator
if (!$this->model->getIsCreate()) {
return true;
}
if ($model::find()->where([$this->field => $param[$this->field]])->exists()) {
if ($model::query()->where([$this->field => $param[$this->field]])->exists()) {
return $this->addError('The :attribute \'' . $param[$this->field] . '\' is exists!');
}
return $this->isFail = TRUE;
+23 -21
View File
@@ -34,7 +34,7 @@ class Validator extends BaseValidator
'required' => [
'class' => 'validator\RequiredValidator',
],
'enums' => [
'enum' => [
'class' => 'validator\EnumValidator',
],
'unique' => [
@@ -102,8 +102,8 @@ class Validator extends BaseValidator
'class' => 'validator\LengthValidator',
'method' => 'default',
],
'round' => [
'class' => 'validator\RoundValidator',
'round' => [
'class' => 'validator\RoundValidator',
],
];
@@ -150,33 +150,29 @@ class Validator extends BaseValidator
public function createRule($field, $rule, $model, $param)
{
$define = ['field' => $field];
foreach ($rule as $key => $val) {
if (!is_null($model)) {
$is_model = is_null($model);
foreach ($rule as $key => $val) {
if (!$is_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;
$constr = array_merge($this->classMap[$type], $define, [
'params' => $param,
'model' => $model
]);
$this->validators[] = $constr;
}
}
@@ -189,14 +185,14 @@ class Validator extends BaseValidator
if (count($this->validators) < 1) {
return true;
}
foreach ($this->validators as $val) {
if ($this->check($val)) {
[$result, $validator] = $this->check($val);
if ($result === true) {
continue;
}
$isTrue = false;
if ($val instanceof BaseValidator) {
$this->addError($val->getError());
if ($validator instanceof BaseValidator) {
$this->addError($validator->getError());
}
break;
}
@@ -213,9 +209,15 @@ class Validator extends BaseValidator
private function check(BaseValidator|array|Closure $val): mixed
{
if (is_callable($val, true)) {
return call_user_func($val, $this);
return [call_user_func($val, $this), $val];
}
return $val->trigger();
$class = Kiri::getDi()->get($val['class']);
unset($val['class']);
Kiri::configure($class, $val);
return [$class->trigger(), $class];
}
}