1
1
<?php
2
2
3
3
namespace Atakde \PhpValidation ;
4
+
4
5
use Atakde \PhpValidation \Exception \InvalidRuleException ;
5
6
6
7
class Validator
@@ -17,6 +18,8 @@ public function __construct()
17
18
'email ' => new Rule \EmailRule (),
18
19
'password ' => new Rule \PasswordRule (),
19
20
'required ' => new Rule \RequiredRule (),
21
+ 'max ' => new Rule \MaxRule (),
22
+ 'min ' => new Rule \MinRule ()
20
23
];
21
24
}
22
25
@@ -25,10 +28,13 @@ public function validate($rules, $params)
25
28
foreach ($ rules as $ ruleField => $ ruleString ) {
26
29
$ ruleArray = explode ('| ' , $ ruleString );
27
30
foreach ($ ruleArray as $ rule ) {
28
- if (isset ($ this ->validators [$ rule ])) {
31
+ $ ruleSettings = $ this ->parseRule ($ rule );
32
+
33
+ if (isset ($ this ->validators [$ ruleSettings ['rule ' ]])) {
29
34
$ checkValue = isset ($ params [$ ruleField ]) ? $ params [$ ruleField ] : null ;
30
- if (!$ this ->validators [$ rule ]->check ($ checkValue )) {
31
- $ this ->errors [$ ruleField ][] = $ this ->validators [$ rule ]->getMessage ();
35
+
36
+ if (!$ this ->validators [$ ruleSettings ['rule ' ]]->check ($ checkValue , $ ruleSettings ['params ' ])) {
37
+ $ this ->errors [$ ruleField ][] = $ this ->validators [$ ruleSettings ['rule ' ]]->getMessage ();
32
38
}
33
39
} else {
34
40
throw new InvalidRuleException ('Rule ' . $ rule . ' is not defined ' );
@@ -37,6 +43,18 @@ public function validate($rules, $params)
37
43
}
38
44
}
39
45
46
+ private function parseRule ($ rule )
47
+ {
48
+ $ ruleSettings = explode (': ' , $ rule );
49
+ $ ruleName = $ ruleSettings [0 ];
50
+ $ ruleParams = isset ($ ruleSettings [1 ]) ? $ ruleSettings [1 ] : null ;
51
+
52
+ return [
53
+ 'rule ' => $ ruleName ,
54
+ 'params ' => [$ ruleParams ]
55
+ ];
56
+ }
57
+
40
58
public function fails ()
41
59
{
42
60
return count ($ this ->errors ) > 0 ;
0 commit comments