From c1a17f273d2905cf736735a3012cf307634364eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=A3=E8=A8=80=E5=B0=B1=E6=98=AFSiam?= <59419979@qq.com> Date: Fri, 14 Feb 2025 09:42:45 +0800 Subject: [PATCH 1/5] Update ValidatedDTO.php --- src/validated-dto/src/ValidatedDTO.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/validated-dto/src/ValidatedDTO.php b/src/validated-dto/src/ValidatedDTO.php index c59d42a43..2530c4db1 100644 --- a/src/validated-dto/src/ValidatedDTO.php +++ b/src/validated-dto/src/ValidatedDTO.php @@ -61,6 +61,11 @@ protected function after(ValidatorInterface $validator): void // Do nothing } + protected function initValidator(ValidatorInterface $validator): void + { + // Do nothing + } + protected function scenes(): array { return []; @@ -150,6 +155,8 @@ protected function isValidData(): bool $this->attributes() ); + $this->initValidator($this->validator); + $this->validator->after(fn ($validator) => $this->after($validator)); return ! $this->validator->fails(); @@ -197,6 +204,8 @@ private function validationPasses(): bool $this->attributes() ); + $this->initValidator($this->validator); + $this->validator->after(fn (ValidatorInterface $validator) => $this->after($validator)); return ! $this->validator->fails(); From 0b15d12117bb9ca77ae7d6700b97d7360738626a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=A3=E8=A8=80=E5=B0=B1=E6=98=AFSiam?= <59419979@qq.com> Date: Fri, 14 Feb 2025 10:15:08 +0800 Subject: [PATCH 2/5] Update ValidatedDTO.php --- src/validated-dto/src/ValidatedDTO.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/validated-dto/src/ValidatedDTO.php b/src/validated-dto/src/ValidatedDTO.php index 2530c4db1..724851fbb 100644 --- a/src/validated-dto/src/ValidatedDTO.php +++ b/src/validated-dto/src/ValidatedDTO.php @@ -19,6 +19,7 @@ use Hyperf\Contract\ValidatorInterface; use Hyperf\Validation\Contract\ValidatorFactoryInterface; use Hyperf\Validation\ValidationException; +use Hyperf\Validation\Validator; use InvalidArgumentException; abstract class ValidatedDTO extends SimpleDTO @@ -61,9 +62,9 @@ protected function after(ValidatorInterface $validator): void // Do nothing } - protected function initValidator(ValidatorInterface $validator): void + protected function addExtensions(): array { - // Do nothing + return []; } protected function scenes(): array @@ -155,7 +156,9 @@ protected function isValidData(): bool $this->attributes() ); - $this->initValidator($this->validator); + if ($this->validator instanceof Validator) { + $this->validator->addExtensions($this->addExtensions()); + } $this->validator->after(fn ($validator) => $this->after($validator)); @@ -204,7 +207,9 @@ private function validationPasses(): bool $this->attributes() ); - $this->initValidator($this->validator); + if ($this->validator instanceof Validator) { + $this->validator->addExtensions($this->addExtensions()); + } $this->validator->after(fn (ValidatorInterface $validator) => $this->after($validator)); From 6013218c507f99710d5f4b97df0eb591c72321a8 Mon Sep 17 00:00:00 2001 From: Deeka Wong <8337659+huangdijia@users.noreply.github.com> Date: Fri, 14 Feb 2025 10:23:17 +0800 Subject: [PATCH 3/5] refactor: rename addExtensions to extensions and update validator extension logic --- src/validated-dto/src/ValidatedDTO.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/validated-dto/src/ValidatedDTO.php b/src/validated-dto/src/ValidatedDTO.php index 724851fbb..a038c49a5 100644 --- a/src/validated-dto/src/ValidatedDTO.php +++ b/src/validated-dto/src/ValidatedDTO.php @@ -11,6 +11,7 @@ namespace FriendsOfHyperf\ValidatedDTO; +use Closure; use FriendsOfHyperf\ValidatedDTO\Casting\Castable; use FriendsOfHyperf\ValidatedDTO\Exception\CastTargetException; use FriendsOfHyperf\ValidatedDTO\Exception\MissingCastTypeException; @@ -62,7 +63,10 @@ protected function after(ValidatorInterface $validator): void // Do nothing } - protected function addExtensions(): array + /** + * @return array + */ + protected function extensions(): array { return []; } @@ -156,8 +160,8 @@ protected function isValidData(): bool $this->attributes() ); - if ($this->validator instanceof Validator) { - $this->validator->addExtensions($this->addExtensions()); + if (method_exists($this->validator, 'addExtensions') && $extensions = $this->extensions()) { + $this->validator->addExtensions($extensions); } $this->validator->after(fn ($validator) => $this->after($validator)); @@ -208,7 +212,7 @@ private function validationPasses(): bool ); if ($this->validator instanceof Validator) { - $this->validator->addExtensions($this->addExtensions()); + $this->validator->addExtensions($this->extensions()); } $this->validator->after(fn (ValidatorInterface $validator) => $this->after($validator)); From fd068ad0edb1d9e164bfe74bca05500019f9d2b7 Mon Sep 17 00:00:00 2001 From: Deeka Wong <8337659+huangdijia@users.noreply.github.com> Date: Fri, 14 Feb 2025 10:24:56 +0800 Subject: [PATCH 4/5] refactor: improve validator extension logic in ValidatedDTO --- src/validated-dto/src/ValidatedDTO.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/validated-dto/src/ValidatedDTO.php b/src/validated-dto/src/ValidatedDTO.php index a038c49a5..dffec5260 100644 --- a/src/validated-dto/src/ValidatedDTO.php +++ b/src/validated-dto/src/ValidatedDTO.php @@ -211,8 +211,8 @@ private function validationPasses(): bool $this->attributes() ); - if ($this->validator instanceof Validator) { - $this->validator->addExtensions($this->extensions()); + if (method_exists($this->validator, 'addExtensions') && $extensions = $this->extensions()) { + $this->validator->addExtensions($extensions); } $this->validator->after(fn (ValidatorInterface $validator) => $this->after($validator)); From 79f1a7587ed6f8f536ee13ce8c2c9c02aeda799d Mon Sep 17 00:00:00 2001 From: Deeka Wong <8337659+huangdijia@users.noreply.github.com> Date: Fri, 14 Feb 2025 10:39:21 +0800 Subject: [PATCH 5/5] refactor: replace extensions method with afterValidatorResolving for improved validator handling --- src/validated-dto/src/ValidatedDTO.php | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/validated-dto/src/ValidatedDTO.php b/src/validated-dto/src/ValidatedDTO.php index dffec5260..cfaac4a48 100644 --- a/src/validated-dto/src/ValidatedDTO.php +++ b/src/validated-dto/src/ValidatedDTO.php @@ -11,7 +11,6 @@ namespace FriendsOfHyperf\ValidatedDTO; -use Closure; use FriendsOfHyperf\ValidatedDTO\Casting\Castable; use FriendsOfHyperf\ValidatedDTO\Exception\CastTargetException; use FriendsOfHyperf\ValidatedDTO\Exception\MissingCastTypeException; @@ -63,12 +62,9 @@ protected function after(ValidatorInterface $validator): void // Do nothing } - /** - * @return array - */ - protected function extensions(): array + protected function afterValidatorResolving(ValidatorInterface $validator): void { - return []; + // Do nothing } protected function scenes(): array @@ -160,9 +156,7 @@ protected function isValidData(): bool $this->attributes() ); - if (method_exists($this->validator, 'addExtensions') && $extensions = $this->extensions()) { - $this->validator->addExtensions($extensions); - } + $this->afterValidatorResolving($this->validator); $this->validator->after(fn ($validator) => $this->after($validator)); @@ -211,9 +205,7 @@ private function validationPasses(): bool $this->attributes() ); - if (method_exists($this->validator, 'addExtensions') && $extensions = $this->extensions()) { - $this->validator->addExtensions($extensions); - } + $this->afterValidatorResolving($this->validator); $this->validator->after(fn (ValidatorInterface $validator) => $this->after($validator));