diff --git a/src/Validator/Validator.php b/src/Validator/Validator.php index 88fd870..c8303ad 100644 --- a/src/Validator/Validator.php +++ b/src/Validator/Validator.php @@ -3,7 +3,7 @@ /// /** - * Проверка коллекции + * Проверка коллекции */ namespace ctiso\Validator; use Exception, @@ -14,35 +14,38 @@ 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' + ); function __construct($rules = array()) { $this->addRuleList($rules); } + function addRuleType($name, $className) { + $this->type[$name] = $className; + } + /** * Добавление списка правил в специальном формате * array(array('name' => fieldname, 'validate' => ruletext), ...) - * fieldname - Имя переменой для проверки + * fieldname - Имя переменой для проверки * ruletext - Описание правила см. формат правила ниже */ public function addRuleList(array $input) { - $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' - ); - // Разбор правила проверки // Формат правила 'rule1|rule2,param1=value1|rule3,param1=value1,param2=value2' foreach ($input as $value) { @@ -55,8 +58,8 @@ class Validator $rule_param = explode(",", $rule); $name = array_shift($rule_param); - if (isset($type[$name])) { - $constructor = $type[$name]; + if (isset($this->type[$name])) { + $constructor = $this->type[$name]; $ruleObj = new $constructor($value['name'], false); // Нужны шаблонные сообщения для правил if (isset($value['context'])) { $ruleObj->setContext($value['context']); @@ -81,7 +84,7 @@ class Validator $this->chain[] = $rule; } } - + public function skip($rule/*: AbstractRule*/, $container/*: Collection*/) // -> Rule_Abstract { if ($rule->skipEmpty()) { @@ -90,10 +93,10 @@ class Validator $value = trim($data); return $value == ''; } - } + } return false; } - + public function validate(Collection $container, $rule = null, $status = null) { $fields = array();