fix: noverify + типы для правил провеки

This commit is contained in:
origami11@yandex.ru 2025-01-21 19:33:33 +03:00
parent 9680409ba9
commit 90cbd3b2b6
10 changed files with 319 additions and 300 deletions

View file

@ -12,24 +12,29 @@ use Exception,
class Validator
{
protected $chain = array(); // Массив правил
protected $errorMsg = array(); // Массив ошибок
protected $type = array(
'date' => 'ctiso\\Validator\\Rule\\Date',
'email' => 'ctiso\\Validator\\Rule\\Email',
'emaillist'=> 'ctiso\\Validator\\Rule\\EmailList',
'match' => 'ctiso\\Validator\\Rule\\MatchRule',
'time' => 'ctiso\\Validator\\Rule\\Time',
'alpha' => 'ctiso\\Validator\\Rule\\Alpha',
'require' => 'ctiso\\Validator\\Rule\\Notnull',
'numeric' => 'ctiso\\Validator\\Rule\\Numeric',
'unique' => 'ctiso\\Validator\\Rule\\Unique',
'filename' => 'ctiso\\Validator\\Rule\\FileName',
'count' => 'ctiso\\Validator\\Rule\\Count',
'isfile' => 'ctiso\\Validator\\Rule\\IsFile',
'code' => 'ctiso\\Validator\\Rule\\Code',
'reg' => 'ctiso\\Validator\\Rule\\PregMatch',
);
protected $chain = []; // Массив правил
protected $errorMsg = []; // Массив ошибок
/**
* Поля по умолчанию
* @var array<string, class-string<Rule\AbstractRule>>
*/
protected $type = [
'date' => Rule\Date::class,
'email' => Rule\Email::class,
'emaillist'=> Rule\EmailList::class,
'match' => Rule\MatchRule::class,
'time' => Rule\Time::class,
'alpha' => Rule\Alpha::class,
'require' => Rule\Notnull::class,
'numeric' => Rule\Numeric::class,
'unique' => Rule\Unique::class,
'filename' => Rule\FileName::class,
'count' => Rule\Count::class,
'isfile' => Rule\IsFile::class,
'code' => Rule\Code::class,
'reg' => Rule\PregMatch::class,
];
function __construct($rules = []) {
$this->addRuleList($rules);
@ -98,13 +103,17 @@ class Validator
return false;
}
function reset() {
$this->errorMsg = [];
}
public function validate(Collection $container, $rule = null, $status = null)
{
$fields = [];
if ($rule) {
$this->chain = $rule;
}
$this->errorMsg = [];
// $this->errorMsg = [];
foreach ($this->chain as $rule) {
//echo $key;
if (!in_array($rule->field, $fields) && !$this->skip($rule, $container) && !$rule->isValid($container, $status)) {