diff --git a/Helga/RuleParser.php b/Helga/RuleParser.php index 11c2e5d..89db278 100644 --- a/Helga/RuleParser.php +++ b/Helga/RuleParser.php @@ -27,8 +27,6 @@ public function parse($subject, $key = null) if (is_string(array_keys($this->__rules__)[0])) { $state->isSingle = false; - $state->failed = true; - $state->passed = false; foreach ($this->__rules__ as $k => $rule) { if (!isset($state->errors[$k])) { $state->errors[$k] = []; @@ -37,8 +35,6 @@ public function parse($subject, $key = null) $validator = new Validator($value, $k); $validator->withRules($rule); $state->errors[$k] = array_merge($state->errors[$k], $validator->errors()); - $state->failed = ($state->failed || $validator->fails()); - $state->passed = ($state->passed && $validator->passes()); } foreach ($state->errors as $i => $arr) { if (empty($arr)) { @@ -78,14 +74,14 @@ public function parse($subject, $key = null) if ($key) { $params[] = $key; - } + } if (!method_exists(Executioner::class, $function)) { throw new \Error(sprintf("Unknown rule directive '%s'.", $function)); } - $eval = call_user_func_array(Executioner::class . "::" . $function, $params); - + $eval = call_user_func_array(Executioner::class . "::" . $function, $params); + if (!$eval->return) { if ($message) { $eval->message = $message; @@ -97,13 +93,6 @@ public function parse($subject, $key = null) throw new \Error("Invalid rules format"); } - if (empty($errors)) { - $state->failed = false; - $state->passed = true; - } else { - $state->failed = true; - $state->passed = false; - } $state->errors = $errors; return $state; } diff --git a/Helga/ValidationState.php b/Helga/ValidationState.php index 8e99c50..3022b7a 100644 --- a/Helga/ValidationState.php +++ b/Helga/ValidationState.php @@ -5,7 +5,13 @@ class ValidationState { public $isSingle; - public $passed; - public $failed; public $errors = []; + + public function passed(){ + return empty($this->errors) === true; + } + + public function failed(){ + return empty($this->errors) === false; + } } diff --git a/Helga/Validator.php b/Helga/Validator.php index 36b94e6..573a278 100644 --- a/Helga/Validator.php +++ b/Helga/Validator.php @@ -64,9 +64,9 @@ public function __construct($subject, $key = null) public function passes() { $vs = $this->eval(); - if ($vs->passed) { + if ($vs->passed()) { return true; - } else { + } else if($vs->failed()) { return false; } } @@ -79,9 +79,9 @@ public function passes() public function fails() { $vs = $this->eval(); - if ($vs->failed) { + if ($vs->failed()) { return true; - } else { + } else if($vs->passed()) { return false; } } @@ -242,7 +242,7 @@ public function withRules(array $rules) private function eval() { - $vs = (new RuleParser($this->__rules__))->parse($this->__subject__, $this->__key__); + $vs = (new RuleParser($this->__rules__))->parse($this->__subject__, $this->__key__); $this->__errors__ = $vs->errors; return $vs; }