@@ -404,15 +404,15 @@ public function digitsBetween(int $min, int $max): self
404
404
* pass a callback which accepts a {@see \Illuminate\Validation\Rules\Dimensions} instance.
405
405
*
406
406
* @link https://laravel.com/docs/11.x/validation#rule-dimensions
407
- * @param array<string, int|float> $constraints
408
- * @param ?callable(\Illuminate\Validation\Rules\Dimensions): void $modifier
407
+ * @param array<string, int|float|string > $constraints
408
+ * @param ?callable(\Illuminate\Validation\Rules\Dimensions): (\Illuminate\Validation\Rules\Dimensions| void) $modifier
409
409
*/
410
410
public function dimensions (array $ constraints = [], ?callable $ modifier = null ): self
411
411
{
412
412
$ rule = Rule::dimensions ($ constraints );
413
413
414
414
if ($ modifier ) {
415
- $ modifier ($ rule );
415
+ $ rule = $ this -> modify ($ rule, $ modifier );
416
416
}
417
417
418
418
return $ this ->rule ($ rule );
@@ -473,14 +473,14 @@ public function endsWith(string ...$value): self
473
473
*
474
474
* @link https://laravel.com/docs/11.x/validation#rule-enum
475
475
* @param class-string $type
476
- * @param ?callable(\Illuminate\Validation\Rules\Enum): void $modifier
476
+ * @param ?callable(\Illuminate\Validation\Rules\Enum): (\Illuminate\Validation\Rules\Enum| void) $modifier
477
477
*/
478
478
public function enum (string $ type , ?callable $ modifier = null ): self
479
479
{
480
480
$ rule = Rule::enum ($ type );
481
481
482
482
if ($ modifier ) {
483
- $ modifier ($ rule );
483
+ $ rule = $ this -> modify ($ rule, $ modifier );
484
484
}
485
485
486
486
return $ this ->rule ($ rule );
@@ -502,7 +502,7 @@ public function exclude(): self
502
502
* methods if a true boolean is passed in or the passed in closure returns true.
503
503
*
504
504
* @link https://laravel.com/docs/11.x/validation#rule-exclude-if
505
- * @param callable| bool $callback
505
+ * @param bool|callable(): bool $callback
506
506
*/
507
507
public function excludeIf (mixed $ callback ): self
508
508
{
@@ -562,14 +562,14 @@ public function excludeWithout(string $anotherField): self
562
562
* {@see RuleSet::rule} or pass a callback which accepts an {@see \Illuminate\Validation\Rules\Exists} instance.
563
563
*
564
564
* @link https://laravel.com/docs/11.x/validation#rule-exists
565
- * @param ?callable(\Illuminate\Validation\Rules\Exists): void $modifier
565
+ * @param ?callable(\Illuminate\Validation\Rules\Exists): (\Illuminate\Validation\Rules\Exists| void) $modifier
566
566
*/
567
567
public function exists (string $ table , string $ column = 'NULL ' , ?callable $ modifier = null ): self
568
568
{
569
569
$ rule = Rule::exists ($ table , $ column );
570
570
571
571
if ($ modifier ) {
572
- $ modifier ($ rule );
572
+ $ rule = $ this -> modify ($ rule, $ modifier );
573
573
}
574
574
575
575
return $ this ->rule ($ rule );
@@ -951,14 +951,14 @@ public function numeric(): self
951
951
* use {@see Rule::password} with {@see RuleSet::rule}, or pass a callback which accepts a {@see Password} instance.
952
952
*
953
953
* @link https://laravel.com/docs/11.x/validation#validating-passwords
954
- * @param ?callable(\Illuminate\Validation\Rules\Password): void $modifier
954
+ * @param ?callable(\Illuminate\Validation\Rules\Password): (\Illuminate\Validation\Rules\Password| void) $modifier
955
955
*/
956
956
public function password (?int $ size = null , ?callable $ modifier = null ): self
957
957
{
958
958
$ rule = Rule::password ($ size );
959
959
960
960
if ($ modifier ) {
961
- $ modifier ($ rule );
961
+ $ rule = $ this -> modify ($ rule, $ modifier );
962
962
}
963
963
964
964
return $ this ->rule ($ rule );
@@ -1294,14 +1294,14 @@ public function ulid(): self
1294
1294
* {@see RuleSet::rule} or pass a callback which accepts a {@see \Illuminate\Validation\Rules\Unique} instance.
1295
1295
*
1296
1296
* @link https://laravel.com/docs/11.x/validation#rule-unique
1297
- * @param ?callable(\Illuminate\Validation\Rules\Unique): void $modifier
1297
+ * @param ?callable(\Illuminate\Validation\Rules\Unique): (\Illuminate\Validation\Rules\Unique| void) $modifier
1298
1298
*/
1299
1299
public function unique (string $ table , string $ column = 'NULL ' , ?callable $ modifier = null ): self
1300
1300
{
1301
1301
$ rule = Rule::unique ($ table , $ column );
1302
1302
1303
1303
if ($ modifier ) {
1304
- $ modifier ($ rule );
1304
+ $ rule = $ this -> modify ($ rule, $ modifier );
1305
1305
}
1306
1306
1307
1307
return $ this ->rule ($ rule );
@@ -1353,4 +1353,16 @@ protected static function getDefinedRuleSets(): Contracts\DefinedRuleSets
1353
1353
{
1354
1354
return resolve (Contracts \DefinedRuleSets::class);
1355
1355
}
1356
+
1357
+ /**
1358
+ * @param T $rule
1359
+ * @param callable(T): (T|void) $modifier
1360
+ * @return T
1361
+ * @template T
1362
+ */
1363
+ protected function modify ($ rule , callable $ modifier )
1364
+ {
1365
+ /** @var T */
1366
+ return $ modifier ($ rule ) ?: $ rule ;
1367
+ }
1356
1368
}
0 commit comments