Add type declarations to private DefaultChoiceListFactory methods

This commit is contained in:
Valentin Udaltsov 2019-08-13 09:07:15 +03:00
parent 3bc4e4f00d
commit 9fc6ba66b3

View File

@ -53,12 +53,16 @@ class DefaultChoiceListFactory implements ChoiceListFactoryInterface
$choices = $list->getChoices(); $choices = $list->getChoices();
$keys = $list->getOriginalKeys(); $keys = $list->getOriginalKeys();
if (!\is_callable($preferredChoices) && !empty($preferredChoices)) { if (!\is_callable($preferredChoices)) {
// make sure we have keys that reflect order if (empty($preferredChoices)) {
$preferredChoices = array_values($preferredChoices); $preferredChoices = null;
$preferredChoices = static function ($choice) use ($preferredChoices) { } else {
return array_search($choice, $preferredChoices, true); // make sure we have keys that reflect order
}; $preferredChoices = array_values($preferredChoices);
$preferredChoices = static function ($choice) use ($preferredChoices) {
return array_search($choice, $preferredChoices, true);
};
}
} }
// The names are generated from an incrementing integer by default // The names are generated from an incrementing integer by default
@ -76,7 +80,7 @@ class DefaultChoiceListFactory implements ChoiceListFactoryInterface
self::addChoiceViewsGroupedByCallable( self::addChoiceViewsGroupedByCallable(
$groupBy, $groupBy,
$choice, $choice,
(string) $value, $value,
$label, $label,
$keys, $keys,
$index, $index,
@ -126,7 +130,7 @@ class DefaultChoiceListFactory implements ChoiceListFactoryInterface
return new ChoiceListView($otherViews, $preferredViews); return new ChoiceListView($otherViews, $preferredViews);
} }
private static function addChoiceView($choice, $value, $label, $keys, &$index, $attr, $isPreferred, &$preferredViews, &$preferredViewsOrder, &$otherViews) private static function addChoiceView($choice, string $value, $label, array $keys, &$index, $attr, ?callable $isPreferred, array &$preferredViews, array &$preferredViewsOrder, array &$otherViews)
{ {
// $value may be an integer or a string, since it's stored in the array // $value may be an integer or a string, since it's stored in the array
// keys. We want to guarantee it's a string though. // keys. We want to guarantee it's a string though.
@ -154,7 +158,7 @@ class DefaultChoiceListFactory implements ChoiceListFactoryInterface
); );
// $isPreferred may be null if no choices are preferred // $isPreferred may be null if no choices are preferred
if ($isPreferred && false !== $preferredKey = $isPreferred($choice, $key, $value)) { if (null !== $isPreferred && false !== $preferredKey = $isPreferred($choice, $key, $value)) {
$preferredViews[$nextIndex] = $view; $preferredViews[$nextIndex] = $view;
$preferredViewsOrder[$nextIndex] = $preferredKey; $preferredViewsOrder[$nextIndex] = $preferredKey;
} }
@ -162,7 +166,7 @@ class DefaultChoiceListFactory implements ChoiceListFactoryInterface
$otherViews[$nextIndex] = $view; $otherViews[$nextIndex] = $view;
} }
private static function addChoiceViewsFromStructuredValues($values, $label, $choices, $keys, &$index, $attr, $isPreferred, &$preferredViews, &$preferredViewsOrder, &$otherViews) private static function addChoiceViewsFromStructuredValues(array $values, $label, array $choices, array $keys, &$index, $attr, ?callable $isPreferred, array &$preferredViews, array &$preferredViewsOrder, array &$otherViews)
{ {
foreach ($values as $key => $value) { foreach ($values as $key => $value) {
if (null === $value) { if (null === $value) {
@ -214,7 +218,7 @@ class DefaultChoiceListFactory implements ChoiceListFactoryInterface
} }
} }
private static function addChoiceViewsGroupedByCallable($groupBy, $choice, $value, $label, $keys, &$index, $attr, $isPreferred, &$preferredViews, &$preferredViewsOrder, &$otherViews) private static function addChoiceViewsGroupedByCallable(callable $groupBy, $choice, string $value, $label, array $keys, &$index, $attr, ?callable $isPreferred, array &$preferredViews, array &$preferredViewsOrder, array &$otherViews)
{ {
$groupLabels = $groupBy($choice, $keys[$value], $value); $groupLabels = $groupBy($choice, $keys[$value], $value);