1010 */
1111
1212namespace Validator ;
13+ use Exception ;
1314
1415class Validation {
1516 /**
@@ -74,8 +75,7 @@ class Validation {
7475 'in ' ,
7576 'not_in ' ,
7677 'equal ' ,
77- 'not_equal ' ,
78- 'rules '
78+ 'not_equal '
7979 ];
8080
8181 /**
@@ -93,10 +93,39 @@ class Validation {
9393 private $ invalid_data = [];
9494
9595 function __construct (array $ rules , array $ messages ) {
96+ // Parse validation rules
97+ $ tmpRules = [];
98+ foreach ($ rules as $ key => $ value ) {
99+ foreach ($ value as $ rule => $ val ) {
100+ //Check rule is valid or not
101+ if (in_array ($ rule , $ this ->predefined_rules )) {
102+ $ tmpRules [$ key ][$ rule ] = $ val ;
103+ } else {
104+ $ tmpRules [$ key ]['rules ' ][$ rule ] = $ val ;
105+ }
106+ }
107+ }
96108 // Set data validation rules
97- $ this ->rules = $ rules ;
109+ $ this ->rules = $ tmpRules ;
110+
111+ // Parse custom error messages
112+ $ tmpMessages = [];
113+ foreach ($ messages as $ key => $ value ) {
114+ if (is_array ($ value )) {
115+ foreach ($ value as $ rule => $ val ) {
116+ //Check messages is valid or not
117+ if (in_array ($ rule , $ this ->predefined_rules )) {
118+ $ tmpMessages [$ key ][$ rule ] = $ val ;
119+ } else {
120+ $ tmpMessages [$ key ]['rules ' ][$ rule ] = $ val ;
121+ }
122+ }
123+ } else {
124+ throw new Exception ('Error: invalid validation error messages ' );
125+ }
126+ }
98127 // Set data validation messages
99- $ this ->messages = $ messages ;
128+ $ this ->messages = $ tmpMessages ;
100129 }
101130
102131 /**
@@ -155,13 +184,7 @@ private function is_valid(array $data) {
155184 foreach ($ this ->rules as $ data_key => $ rules ) {
156185 foreach ($ rules as $ rule => $ value ) {
157186 $ rule = strtolower ($ rule );
158- //Check rule is valid or not
159- if (in_array ($ rule , $ this ->predefined_rules )) {
160- $ func = "validate_ " .$ rule ;
161- } else {
162- $ this ->errors ['error ' ] = 'Error : Invalid validation rules. ' ;
163- return false ;
164- }
187+ $ func = "validate_ " .$ rule ;
165188 // Check data key is array or not
166189 if (strpos ($ data_key , '. ' )) {
167190 $ data_keys = explode ('. ' , $ data_key );
@@ -239,7 +262,7 @@ public function errors(string $error=NULL) {
239262 * @param string $custom_rule
240263 * @return void
241264 */
242- private function set_error (string $ data_key , array $ rules , string $ rule , $ custom_rule =NULL ) {
265+ private function set_error (string $ data_key , array $ rules , string $ rule , string $ custom_rule =NULL ) {
243266 //Default error messages
244267 $ this ->default_messages = [
245268 'required ' => $ data_key .' is required. ' ,
@@ -325,12 +348,10 @@ private function set_error(string $data_key, array $rules, string $rule, $custom
325348
326349 if (isset ($ this ->messages [$ data_key ]) && is_array ($ this ->messages [$ data_key ])) {
327350 //Set users custom error messages
328- if (isset ($ this ->messages [$ data_key ][$ rule ])) {
329- if (is_array ($ this ->messages [$ data_key ][$ rule ]) && isset ($ this ->messages [$ data_key ][$ rule ][$ custom_rule ])) {
330- $ this ->errors [$ data_key ] = $ this ->messages [$ data_key ][$ rule ][$ custom_rule ];
331- } else {
332- $ this ->errors [$ data_key ] = $ this ->messages [$ data_key ][$ rule ];
333- }
351+ if (isset ($ this ->messages [$ data_key ][$ rule ]) && $ custom_rule == NULL && $ rule !== 'rules ' ) {
352+ $ this ->errors [$ data_key ] = $ this ->messages [$ data_key ][$ rule ];
353+ } else if (isset ($ this ->messages [$ data_key ][$ rule ]) && is_array ($ this ->messages [$ data_key ][$ rule ]) && isset ($ this ->messages [$ data_key ][$ rule ][$ custom_rule ]) && $ rule === 'rules ' ) {
354+ $ this ->errors [$ data_key ] = $ this ->messages [$ data_key ][$ rule ][$ custom_rule ];
334355 } else {
335356 //Set default error messages
336357 if ($ rules [$ rule ] === true && is_array ($ this ->default_messages [$ rule ]) && isset ($ this ->default_messages [$ rule ]['true ' ])) {
0 commit comments