Skip to content

Commit b579d6a

Browse files
committed
Merge branch '5.4' into 6.0
* 5.4: fix SQLSRV throws for method_exists() [HttpKernel] Add basic support for language negotiation [Messenger] Add a middleware to log when transaction has been left open [HttpClient] Add method to set response factory in mock client Move array_merge calls out of loops to improve performance Remove references to DBALException [VarDumper] Fix handling of "new" in initializers on PHP 8.1
2 parents d829257 + 299b56f commit b579d6a

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

Extension/Validator/ViolationMapper/ViolationMapper.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,13 +185,18 @@ public function mapViolation(ConstraintViolation $violation, FormInterface $form
185185

186186
if (null !== $this->translator) {
187187
$form = $scope;
188-
$translationParameters = $form->getConfig()->getOption('label_translation_parameters', []);
188+
$translationParameters[] = $form->getConfig()->getOption('label_translation_parameters', []);
189189

190190
do {
191191
$translationDomain = $form->getConfig()->getOption('translation_domain');
192-
$translationParameters = array_merge($form->getConfig()->getOption('label_translation_parameters', []), $translationParameters);
192+
array_unshift(
193+
$translationParameters,
194+
$form->getConfig()->getOption('label_translation_parameters', [])
195+
);
193196
} while (null === $translationDomain && null !== $form = $form->getParent());
194197

198+
$translationParameters = array_merge([], ...$translationParameters);
199+
195200
$label = $this->translator->trans(
196201
$label,
197202
$translationParameters,

FormRegistry.php

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ public function getType(string $name): ResolvedFormTypeInterface
9292
*/
9393
private function resolveType(FormTypeInterface $type): ResolvedFormTypeInterface
9494
{
95-
$typeExtensions = [];
9695
$parentType = $type->getParent();
9796
$fqcn = \get_class($type);
9897

@@ -103,17 +102,15 @@ private function resolveType(FormTypeInterface $type): ResolvedFormTypeInterface
103102

104103
$this->checkedTypes[$fqcn] = true;
105104

105+
$typeExtensions = [];
106106
try {
107107
foreach ($this->extensions as $extension) {
108-
$typeExtensions = array_merge(
109-
$typeExtensions,
110-
$extension->getTypeExtensions($fqcn)
111-
);
108+
$typeExtensions[] = $extension->getTypeExtensions($fqcn);
112109
}
113110

114111
return $this->resolvedTypeFactory->createResolvedType(
115112
$type,
116-
$typeExtensions,
113+
array_merge([], ...$typeExtensions),
117114
$parentType ? $this->getType($parentType) : null
118115
);
119116
} finally {

FormTypeGuesserChain.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,20 @@ class FormTypeGuesserChain implements FormTypeGuesserInterface
2727
*/
2828
public function __construct(iterable $guessers)
2929
{
30+
$tmpGuessers = [];
3031
foreach ($guessers as $guesser) {
3132
if (!$guesser instanceof FormTypeGuesserInterface) {
3233
throw new UnexpectedTypeException($guesser, FormTypeGuesserInterface::class);
3334
}
3435

3536
if ($guesser instanceof self) {
36-
$this->guessers = array_merge($this->guessers, $guesser->guessers);
37+
$tmpGuessers[] = $guesser->guessers;
3738
} else {
38-
$this->guessers[] = $guesser;
39+
$tmpGuessers[] = [$guesser];
3940
}
4041
}
42+
43+
$this->guessers = array_merge([], ...$tmpGuessers);
4144
}
4245

4346
/**

0 commit comments

Comments
 (0)