@@ -7,7 +7,6 @@ class Validation
7
7
8
8
protected $ methods = [];
9
9
protected $ rules = [];
10
- protected $ ignore = [];
11
10
12
11
protected $ params = [];
13
12
protected $ errors = [];
@@ -31,7 +30,7 @@ public function __construct() {}
31
30
*/
32
31
public function messages (array $ messages )
33
32
{
34
- $ this ->messages = array_merge ($ this ->messages , $ messages );
33
+ $ this ->messages = array_replace_recursive ($ this ->messages , $ messages );
35
34
}
36
35
37
36
/**
@@ -49,16 +48,6 @@ public function rules(array $rules)
49
48
$ this ->rules = $ rules ;
50
49
}
51
50
52
- /**
53
- * Elements to ignore when validating, simply filtering them out.
54
- *
55
- * @param array $fields
56
- */
57
- public function ignore (array $ fields )
58
- {
59
- $ this ->ignore = $ fields ;
60
- }
61
-
62
51
/**
63
52
* Add a custom validation method.
64
53
* It must consist of a name, a lambda function and a default string message.
@@ -73,7 +62,7 @@ public function addMethod($name, $method, $message = null)
73
62
return false ;
74
63
}
75
64
76
- $ rule = new \PHPValidation \Rules \Custom ($ this );
65
+ $ rule = new \PHPValidation \Rules \Custom ($ this );
77
66
$ rule ->method = $ method ;
78
67
if (!is_null ($ message )) {
79
68
$ rule ->message = $ message ;
@@ -202,14 +191,36 @@ protected function error($value, $rule, $options = null, $field = null)
202
191
}
203
192
204
193
if (isset ($ message ) && is_string ($ message )) {
205
- if (is_array ($ options )) {
206
- $ message = @vsprintf ($ message , $ options ) ?: $ message ;
207
- } else {
208
- $ message = @sprintf ($ message , $ options ) ?: $ message ;
209
- }
194
+ $ message = $ this ->format ($ message , $ options );
195
+ }
196
+
197
+ return is_scalar ($ message ) ? $ message : '' ;
198
+ }
199
+
200
+ /**
201
+ * Replaces {n} placeholders with arguments.
202
+ */
203
+ protected function format ($ source , $ params )
204
+ {
205
+ $ argsv = func_get_args ();
206
+ $ argsc = func_num_args ();
207
+
208
+ if ($ argsc > 2 && !is_array ($ params )) {
209
+ $ params = array_slice ($ argsv , 1 );
210
+ }
211
+ if (!is_array ($ params )) {
212
+ $ params = [$ params ];
213
+ }
214
+ foreach ($ params as $ i => $ n ) {
215
+ $ source = preg_replace ("/\{ " . preg_quote ($ i ) . "\}/ " , $ n , $ source );
210
216
}
211
217
212
- return is_string ($ message ) ? $ message : '' ;
218
+ return $ source ;
219
+ }
220
+
221
+ public function param ($ name )
222
+ {
223
+ return @$ this ->params [$ name ];
213
224
}
214
225
215
226
/*=============================
@@ -252,9 +263,4 @@ public function depend($options, $value = null)
252
263
253
264
return true ;
254
265
}
255
-
256
- public function param ($ name )
257
- {
258
- return @$ this ->params [$ name ];
259
- }
260
266
}
0 commit comments