@@ -156,16 +156,16 @@ private function getValidationGroups(ValidatorClassMetadataInterface $classMetad
156156 {
157157 if (isset ($ options ['validation_groups ' ])) {
158158 if ($ options ['validation_groups ' ] instanceof GroupSequence) {
159- return $ this ->getGroupSequenceValidationGroups ($ options ['validation_groups ' ]);
159+ return $ this ->flattenValidationGroups ($ options ['validation_groups ' ]-> groups );
160160 }
161161
162- if (!\is_callable ($ options ['validation_groups ' ])) {
163- return $ options ['validation_groups ' ];
162+ if (\is_array ( $ options [ ' validation_groups ' ]) && !\is_callable ($ options ['validation_groups ' ])) {
163+ return $ this -> flattenValidationGroups ( $ options ['validation_groups ' ]) ;
164164 }
165165 }
166166
167167 if ($ classMetadata ->hasGroupSequence ()) {
168- return $ this ->getGroupSequenceValidationGroups ($ classMetadata ->getGroupSequence ());
168+ return $ this ->flattenValidationGroups ($ classMetadata ->getGroupSequence ()-> groups );
169169 }
170170
171171 if (!method_exists ($ classMetadata , 'getDefaultGroup ' )) {
@@ -176,22 +176,24 @@ private function getValidationGroups(ValidatorClassMetadataInterface $classMetad
176176 }
177177
178178 /**
179- * @return array<string>
179+ * @param array<string|string[]|GroupSequence> $groups
180+ *
181+ * @return string[]
180182 */
181- private function getGroupSequenceValidationGroups ( GroupSequence $ groupSequence ): array
183+ private function flattenValidationGroups ( array $ groups ): array
182184 {
183- $ groups = [];
184- foreach ($ groupSequence -> groups as $ subGroup ) {
185- if (\is_array ($ subGroup )) {
186- $ groups [] = $ subGroup ;
187- } elseif ($ subGroup instanceof GroupSequence) {
188- $ groups [] = $ this ->getGroupSequenceValidationGroups ( $ subGroup );
185+ $ flattenGroups = [];
186+ foreach ($ groups as $ group ) {
187+ if (\is_array ($ group )) {
188+ $ flattenGroups [] = $ this -> flattenValidationGroups ( $ group ) ;
189+ } elseif ($ group instanceof GroupSequence) {
190+ $ flattenGroups [] = $ this ->flattenValidationGroups ( $ group -> groups );
189191 } else {
190- $ groups [] = [$ subGroup ];
192+ $ flattenGroups [] = [$ group ];
191193 }
192194 }
193195
194- return array_merge ([], ...$ groups );
196+ return array_merge ([], ...$ flattenGroups );
195197 }
196198
197199 /**
0 commit comments