@@ -404,15 +404,15 @@ public function digitsBetween(int $min, int $max): self
404404 * pass a callback which accepts a {@see \Illuminate\Validation\Rules\Dimensions} instance.
405405 *
406406 * @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
409409 */
410410 public function dimensions (array $ constraints = [], ?callable $ modifier = null ): self
411411 {
412412 $ rule = Rule::dimensions ($ constraints );
413413
414414 if ($ modifier ) {
415- $ modifier ($ rule );
415+ $ rule = $ this -> modify ($ rule, $ modifier );
416416 }
417417
418418 return $ this ->rule ($ rule );
@@ -473,14 +473,14 @@ public function endsWith(string ...$value): self
473473 *
474474 * @link https://laravel.com/docs/11.x/validation#rule-enum
475475 * @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
477477 */
478478 public function enum (string $ type , ?callable $ modifier = null ): self
479479 {
480480 $ rule = Rule::enum ($ type );
481481
482482 if ($ modifier ) {
483- $ modifier ($ rule );
483+ $ rule = $ this -> modify ($ rule, $ modifier );
484484 }
485485
486486 return $ this ->rule ($ rule );
@@ -502,7 +502,7 @@ public function exclude(): self
502502 * methods if a true boolean is passed in or the passed in closure returns true.
503503 *
504504 * @link https://laravel.com/docs/11.x/validation#rule-exclude-if
505- * @param callable| bool $callback
505+ * @param bool|callable(): bool $callback
506506 */
507507 public function excludeIf (mixed $ callback ): self
508508 {
@@ -562,14 +562,14 @@ public function excludeWithout(string $anotherField): self
562562 * {@see RuleSet::rule} or pass a callback which accepts an {@see \Illuminate\Validation\Rules\Exists} instance.
563563 *
564564 * @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
566566 */
567567 public function exists (string $ table , string $ column = 'NULL ' , ?callable $ modifier = null ): self
568568 {
569569 $ rule = Rule::exists ($ table , $ column );
570570
571571 if ($ modifier ) {
572- $ modifier ($ rule );
572+ $ rule = $ this -> modify ($ rule, $ modifier );
573573 }
574574
575575 return $ this ->rule ($ rule );
@@ -951,14 +951,14 @@ public function numeric(): self
951951 * use {@see Rule::password} with {@see RuleSet::rule}, or pass a callback which accepts a {@see Password} instance.
952952 *
953953 * @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
955955 */
956956 public function password (?int $ size = null , ?callable $ modifier = null ): self
957957 {
958958 $ rule = Rule::password ($ size );
959959
960960 if ($ modifier ) {
961- $ modifier ($ rule );
961+ $ rule = $ this -> modify ($ rule, $ modifier );
962962 }
963963
964964 return $ this ->rule ($ rule );
@@ -1294,14 +1294,14 @@ public function ulid(): self
12941294 * {@see RuleSet::rule} or pass a callback which accepts a {@see \Illuminate\Validation\Rules\Unique} instance.
12951295 *
12961296 * @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
12981298 */
12991299 public function unique (string $ table , string $ column = 'NULL ' , ?callable $ modifier = null ): self
13001300 {
13011301 $ rule = Rule::unique ($ table , $ column );
13021302
13031303 if ($ modifier ) {
1304- $ modifier ($ rule );
1304+ $ rule = $ this -> modify ($ rule, $ modifier );
13051305 }
13061306
13071307 return $ this ->rule ($ rule );
@@ -1353,4 +1353,16 @@ protected static function getDefinedRuleSets(): Contracts\DefinedRuleSets
13531353 {
13541354 return resolve (Contracts \DefinedRuleSets::class);
13551355 }
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+ }
13561368}
0 commit comments