Skip to content

Commit a6f5b05

Browse files
[Form] deprecate NumberToLocalizedStringTransformer::ROUND_* constants
1 parent 7425636 commit a6f5b05

15 files changed

+405
-470
lines changed

CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ CHANGELOG
44
5.1.0
55
-----
66

7-
* Deprecated not configuring the `rounding_mode` option of the `PercentType`. It will default to `PercentToLocalizedStringTransformer::ROUND_HALF_UP` in Symfony 6.
8-
* Deprecated not passing a rounding mode to the constructor of `PercentToLocalizedStringTransformer`. It will default to `ROUND_HALF_UP` in Symfony 6.
7+
* Deprecated not configuring the `rounding_mode` option of the `PercentType`. It will default to `\NumberFormatter::ROUND_HALFUP` in Symfony 6.
8+
* Deprecated not passing a rounding mode to the constructor of `PercentToLocalizedStringTransformer`. It will default to `\NumberFormatter::ROUND_HALFUP` in Symfony 6.
99
* Added `collection_entry` block prefix to `CollectionType` entries
1010
* Added a `choice_filter` option to `ChoiceType`
1111
* Added argument `callable|null $filter` to `ChoiceListFactoryInterface::createListFromChoices()` and `createListFromLoader()` - not defining them is deprecated.
@@ -20,6 +20,7 @@ CHANGELOG
2020
* Added a `rounding_mode` option for the PercentType and correctly round the value when submitted
2121
* Deprecated `Symfony\Component\Form\Extension\Validator\Util\ServerParams` in favor of its parent class `Symfony\Component\Form\Util\ServerParams`
2222
* Added the `html5` option to the `ColorType` to validate the input
23+
* Deprecated `NumberToLocalizedStringTransformer::ROUND_*` constants, use `\NumberFormatter::ROUND_*` instead
2324

2425
5.0.0
2526
-----

Extension/Core/DataTransformer/IntegerToLocalizedStringTransformer.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class IntegerToLocalizedStringTransformer extends NumberToLocalizedStringTransfo
2727
* @param bool $grouping Whether thousands should be grouped
2828
* @param int $roundingMode One of the ROUND_ constants in this class
2929
*/
30-
public function __construct(?bool $grouping = false, ?int $roundingMode = self::ROUND_DOWN)
30+
public function __construct(?bool $grouping = false, ?int $roundingMode = \NumberFormatter::ROUND_DOWN)
3131
{
3232
parent::__construct(0, $grouping, $roundingMode);
3333
}

Extension/Core/DataTransformer/MoneyToLocalizedStringTransformer.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class MoneyToLocalizedStringTransformer extends NumberToLocalizedStringTransform
2323
{
2424
private $divisor;
2525

26-
public function __construct(?int $scale = 2, ?bool $grouping = true, ?int $roundingMode = self::ROUND_HALF_UP, ?int $divisor = 1)
26+
public function __construct(?int $scale = 2, ?bool $grouping = true, ?int $roundingMode = \NumberFormatter::ROUND_HALFUP, ?int $divisor = 1)
2727
{
2828
if (null === $grouping) {
2929
$grouping = true;

Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php

Lines changed: 16 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -24,51 +24,37 @@
2424
class NumberToLocalizedStringTransformer implements DataTransformerInterface
2525
{
2626
/**
27-
* Rounds a number towards positive infinity.
28-
*
29-
* Rounds 1.4 to 2 and -1.4 to -1.
27+
* @deprecated since Symfony 5.1, use \NumberFormatter::ROUND_CEILING instead.
3028
*/
3129
const ROUND_CEILING = \NumberFormatter::ROUND_CEILING;
3230

3331
/**
34-
* Rounds a number towards negative infinity.
35-
*
36-
* Rounds 1.4 to 1 and -1.4 to -2.
32+
* @deprecated since Symfony 5.1, use \NumberFormatter::ROUND_FLOOR instead.
3733
*/
3834
const ROUND_FLOOR = \NumberFormatter::ROUND_FLOOR;
3935

4036
/**
41-
* Rounds a number away from zero.
42-
*
43-
* Rounds 1.4 to 2 and -1.4 to -2.
37+
* @deprecated since Symfony 5.1, use \NumberFormatter::ROUND_UP instead.
4438
*/
4539
const ROUND_UP = \NumberFormatter::ROUND_UP;
4640

4741
/**
48-
* Rounds a number towards zero.
49-
*
50-
* Rounds 1.4 to 1 and -1.4 to -1.
42+
* @deprecated since Symfony 5.1, use \NumberFormatter::ROUND_DOWN instead.
5143
*/
5244
const ROUND_DOWN = \NumberFormatter::ROUND_DOWN;
5345

5446
/**
55-
* Rounds to the nearest number and halves to the next even number.
56-
*
57-
* Rounds 2.5, 1.6 and 1.5 to 2 and 1.4 to 1.
47+
* @deprecated since Symfony 5.1, use \NumberFormatter::ROUND_HALFEVEN instead.
5848
*/
5949
const ROUND_HALF_EVEN = \NumberFormatter::ROUND_HALFEVEN;
6050

6151
/**
62-
* Rounds to the nearest number and halves away from zero.
63-
*
64-
* Rounds 2.5 to 3, 1.6 and 1.5 to 2 and 1.4 to 1.
52+
* @deprecated since Symfony 5.1, use \NumberFormatter::ROUND_HALFUP instead.
6553
*/
6654
const ROUND_HALF_UP = \NumberFormatter::ROUND_HALFUP;
6755

6856
/**
69-
* Rounds to the nearest number and halves towards zero.
70-
*
71-
* Rounds 2.5 and 1.6 to 2, 1.5 and 1.4 to 1.
57+
* @deprecated since Symfony 5.1, use \NumberFormatter::ROUND_HALFDOWN instead.
7258
*/
7359
const ROUND_HALF_DOWN = \NumberFormatter::ROUND_HALFDOWN;
7460

@@ -79,14 +65,14 @@ class NumberToLocalizedStringTransformer implements DataTransformerInterface
7965
private $scale;
8066
private $locale;
8167

82-
public function __construct(int $scale = null, ?bool $grouping = false, ?int $roundingMode = self::ROUND_HALF_UP, string $locale = null)
68+
public function __construct(int $scale = null, ?bool $grouping = false, ?int $roundingMode = \NumberFormatter::ROUND_HALFUP, string $locale = null)
8369
{
8470
if (null === $grouping) {
8571
$grouping = false;
8672
}
8773

8874
if (null === $roundingMode) {
89-
$roundingMode = self::ROUND_HALF_UP;
75+
$roundingMode = \NumberFormatter::ROUND_HALFUP;
9076
}
9177

9278
$this->scale = $scale;
@@ -256,25 +242,25 @@ private function round($number)
256242
$number = (string) ($number * $roundingCoef);
257243

258244
switch ($this->roundingMode) {
259-
case self::ROUND_CEILING:
245+
case \NumberFormatter::ROUND_CEILING:
260246
$number = ceil($number);
261247
break;
262-
case self::ROUND_FLOOR:
248+
case \NumberFormatter::ROUND_FLOOR:
263249
$number = floor($number);
264250
break;
265-
case self::ROUND_UP:
251+
case \NumberFormatter::ROUND_UP:
266252
$number = $number > 0 ? ceil($number) : floor($number);
267253
break;
268-
case self::ROUND_DOWN:
254+
case \NumberFormatter::ROUND_DOWN:
269255
$number = $number > 0 ? floor($number) : ceil($number);
270256
break;
271-
case self::ROUND_HALF_EVEN:
257+
case \NumberFormatter::ROUND_HALFEVEN:
272258
$number = round($number, 0, PHP_ROUND_HALF_EVEN);
273259
break;
274-
case self::ROUND_HALF_UP:
260+
case \NumberFormatter::ROUND_HALFUP:
275261
$number = round($number, 0, PHP_ROUND_HALF_UP);
276262
break;
277-
case self::ROUND_HALF_DOWN:
263+
case \NumberFormatter::ROUND_HALFDOWN:
278264
$number = round($number, 0, PHP_ROUND_HALF_DOWN);
279265
break;
280266
}

Extension/Core/DataTransformer/PercentToLocalizedStringTransformer.php

Lines changed: 8 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -23,55 +23,6 @@
2323
*/
2424
class PercentToLocalizedStringTransformer implements DataTransformerInterface
2525
{
26-
/**
27-
* Rounds a number towards positive infinity.
28-
*
29-
* Rounds 1.4 to 2 and -1.4 to -1.
30-
*/
31-
const ROUND_CEILING = \NumberFormatter::ROUND_CEILING;
32-
33-
/**
34-
* Rounds a number towards negative infinity.
35-
*
36-
* Rounds 1.4 to 1 and -1.4 to -2.
37-
*/
38-
const ROUND_FLOOR = \NumberFormatter::ROUND_FLOOR;
39-
40-
/**
41-
* Rounds a number away from zero.
42-
*
43-
* Rounds 1.4 to 2 and -1.4 to -2.
44-
*/
45-
const ROUND_UP = \NumberFormatter::ROUND_UP;
46-
47-
/**
48-
* Rounds a number towards zero.
49-
*
50-
* Rounds 1.4 to 1 and -1.4 to -1.
51-
*/
52-
const ROUND_DOWN = \NumberFormatter::ROUND_DOWN;
53-
54-
/**
55-
* Rounds to the nearest number and halves to the next even number.
56-
*
57-
* Rounds 2.5, 1.6 and 1.5 to 2 and 1.4 to 1.
58-
*/
59-
const ROUND_HALF_EVEN = \NumberFormatter::ROUND_HALFEVEN;
60-
61-
/**
62-
* Rounds to the nearest number and halves away from zero.
63-
*
64-
* Rounds 2.5 to 3, 1.6 and 1.5 to 2 and 1.4 to 1.
65-
*/
66-
const ROUND_HALF_UP = \NumberFormatter::ROUND_HALFUP;
67-
68-
/**
69-
* Rounds to the nearest number and halves towards zero.
70-
*
71-
* Rounds 2.5 and 1.6 to 2, 1.5 and 1.4 to 1.
72-
*/
73-
const ROUND_HALF_DOWN = \NumberFormatter::ROUND_HALFDOWN;
74-
7526
const FRACTIONAL = 'fractional';
7627
const INTEGER = 'integer';
7728

@@ -103,7 +54,7 @@ public function __construct(int $scale = null, string $type = null, ?int $roundi
10354
}
10455

10556
if (null === $roundingMode && (\func_num_args() < 4 || func_get_arg(3))) {
106-
trigger_deprecation('symfony/form', '5.1', 'Not passing a rounding mode to %s() is deprecated. Starting with Symfony 6.0 it will default to "%s::ROUND_HALF_UP".', __METHOD__, __CLASS__);
57+
trigger_deprecation('symfony/form', '5.1', 'Not passing a rounding mode to "%s()" is deprecated. Starting with Symfony 6.0 it will default to "\NumberFormatter::ROUND_HALFUP".', __METHOD__);
10758
}
10859

10960
if (!\in_array($type, self::$types, true)) {
@@ -263,25 +214,25 @@ private function round($number)
263214
$number = (string) ($number * $roundingCoef);
264215

265216
switch ($this->roundingMode) {
266-
case self::ROUND_CEILING:
217+
case \NumberFormatter::ROUND_CEILING:
267218
$number = ceil($number);
268219
break;
269-
case self::ROUND_FLOOR:
220+
case \NumberFormatter::ROUND_FLOOR:
270221
$number = floor($number);
271222
break;
272-
case self::ROUND_UP:
223+
case \NumberFormatter::ROUND_UP:
273224
$number = $number > 0 ? ceil($number) : floor($number);
274225
break;
275-
case self::ROUND_DOWN:
226+
case \NumberFormatter::ROUND_DOWN:
276227
$number = $number > 0 ? floor($number) : ceil($number);
277228
break;
278-
case self::ROUND_HALF_EVEN:
229+
case \NumberFormatter::ROUND_HALFEVEN:
279230
$number = round($number, 0, PHP_ROUND_HALF_EVEN);
280231
break;
281-
case self::ROUND_HALF_UP:
232+
case \NumberFormatter::ROUND_HALFUP:
282233
$number = round($number, 0, PHP_ROUND_HALF_UP);
283234
break;
284-
case self::ROUND_HALF_DOWN:
235+
case \NumberFormatter::ROUND_HALFDOWN:
285236
$number = round($number, 0, PHP_ROUND_HALF_DOWN);
286237
break;
287238
}

Extension/Core/Type/IntegerType.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,18 +46,18 @@ public function configureOptions(OptionsResolver $resolver)
4646
$resolver->setDefaults([
4747
'grouping' => false,
4848
// Integer cast rounds towards 0, so do the same when displaying fractions
49-
'rounding_mode' => IntegerToLocalizedStringTransformer::ROUND_DOWN,
49+
'rounding_mode' => \NumberFormatter::ROUND_DOWN,
5050
'compound' => false,
5151
]);
5252

5353
$resolver->setAllowedValues('rounding_mode', [
54-
IntegerToLocalizedStringTransformer::ROUND_FLOOR,
55-
IntegerToLocalizedStringTransformer::ROUND_DOWN,
56-
IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN,
57-
IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN,
58-
IntegerToLocalizedStringTransformer::ROUND_HALF_UP,
59-
IntegerToLocalizedStringTransformer::ROUND_UP,
60-
IntegerToLocalizedStringTransformer::ROUND_CEILING,
54+
\NumberFormatter::ROUND_FLOOR,
55+
\NumberFormatter::ROUND_DOWN,
56+
\NumberFormatter::ROUND_HALFDOWN,
57+
\NumberFormatter::ROUND_HALFEVEN,
58+
\NumberFormatter::ROUND_HALFUP,
59+
\NumberFormatter::ROUND_UP,
60+
\NumberFormatter::ROUND_CEILING,
6161
]);
6262
}
6363

Extension/Core/Type/MoneyType.php

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
use Symfony\Component\Form\AbstractType;
1515
use Symfony\Component\Form\Extension\Core\DataTransformer\MoneyToLocalizedStringTransformer;
16-
use Symfony\Component\Form\Extension\Core\DataTransformer\NumberToLocalizedStringTransformer;
1716
use Symfony\Component\Form\FormBuilderInterface;
1817
use Symfony\Component\Form\FormInterface;
1918
use Symfony\Component\Form\FormView;
@@ -54,20 +53,20 @@ public function configureOptions(OptionsResolver $resolver)
5453
$resolver->setDefaults([
5554
'scale' => 2,
5655
'grouping' => false,
57-
'rounding_mode' => NumberToLocalizedStringTransformer::ROUND_HALF_UP,
56+
'rounding_mode' => \NumberFormatter::ROUND_HALFUP,
5857
'divisor' => 1,
5958
'currency' => 'EUR',
6059
'compound' => false,
6160
]);
6261

6362
$resolver->setAllowedValues('rounding_mode', [
64-
NumberToLocalizedStringTransformer::ROUND_FLOOR,
65-
NumberToLocalizedStringTransformer::ROUND_DOWN,
66-
NumberToLocalizedStringTransformer::ROUND_HALF_DOWN,
67-
NumberToLocalizedStringTransformer::ROUND_HALF_EVEN,
68-
NumberToLocalizedStringTransformer::ROUND_HALF_UP,
69-
NumberToLocalizedStringTransformer::ROUND_UP,
70-
NumberToLocalizedStringTransformer::ROUND_CEILING,
63+
\NumberFormatter::ROUND_FLOOR,
64+
\NumberFormatter::ROUND_DOWN,
65+
\NumberFormatter::ROUND_HALFDOWN,
66+
\NumberFormatter::ROUND_HALFEVEN,
67+
\NumberFormatter::ROUND_HALFUP,
68+
\NumberFormatter::ROUND_UP,
69+
\NumberFormatter::ROUND_CEILING,
7170
]);
7271

7372
$resolver->setAllowedTypes('scale', 'int');

Extension/Core/Type/NumberType.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,20 +59,20 @@ public function configureOptions(OptionsResolver $resolver)
5959
// default scale is locale specific (usually around 3)
6060
'scale' => null,
6161
'grouping' => false,
62-
'rounding_mode' => NumberToLocalizedStringTransformer::ROUND_HALF_UP,
62+
'rounding_mode' => \NumberFormatter::ROUND_HALFUP,
6363
'compound' => false,
6464
'input' => 'number',
6565
'html5' => false,
6666
]);
6767

6868
$resolver->setAllowedValues('rounding_mode', [
69-
NumberToLocalizedStringTransformer::ROUND_FLOOR,
70-
NumberToLocalizedStringTransformer::ROUND_DOWN,
71-
NumberToLocalizedStringTransformer::ROUND_HALF_DOWN,
72-
NumberToLocalizedStringTransformer::ROUND_HALF_EVEN,
73-
NumberToLocalizedStringTransformer::ROUND_HALF_UP,
74-
NumberToLocalizedStringTransformer::ROUND_UP,
75-
NumberToLocalizedStringTransformer::ROUND_CEILING,
69+
\NumberFormatter::ROUND_FLOOR,
70+
\NumberFormatter::ROUND_DOWN,
71+
\NumberFormatter::ROUND_HALFDOWN,
72+
\NumberFormatter::ROUND_HALFEVEN,
73+
\NumberFormatter::ROUND_HALFUP,
74+
\NumberFormatter::ROUND_UP,
75+
\NumberFormatter::ROUND_CEILING,
7676
]);
7777
$resolver->setAllowedValues('input', ['number', 'string']);
7878
$resolver->setAllowedTypes('scale', ['null', 'int']);

Extension/Core/Type/PercentType.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public function configureOptions(OptionsResolver $resolver)
5050
$resolver->setDefaults([
5151
'scale' => 0,
5252
'rounding_mode' => function (Options $options) {
53-
trigger_deprecation('symfony/form', '5.1', 'Not configuring the "rounding_mode" option is deprecated. It will default to "%s::ROUND_HALF_UP" in Symfony 6.0.', PercentToLocalizedStringTransformer::class);
53+
trigger_deprecation('symfony/form', '5.1', 'Not configuring the "rounding_mode" option is deprecated. It will default to "\NumberFormatter::ROUND_HALFUP" in Symfony 6.0.');
5454

5555
return null;
5656
},
@@ -65,19 +65,19 @@ public function configureOptions(OptionsResolver $resolver)
6565
]);
6666
$resolver->setAllowedValues('rounding_mode', [
6767
null,
68-
PercentToLocalizedStringTransformer::ROUND_FLOOR,
69-
PercentToLocalizedStringTransformer::ROUND_DOWN,
70-
PercentToLocalizedStringTransformer::ROUND_HALF_DOWN,
71-
PercentToLocalizedStringTransformer::ROUND_HALF_EVEN,
72-
PercentToLocalizedStringTransformer::ROUND_HALF_UP,
73-
PercentToLocalizedStringTransformer::ROUND_UP,
74-
PercentToLocalizedStringTransformer::ROUND_CEILING,
68+
\NumberFormatter::ROUND_FLOOR,
69+
\NumberFormatter::ROUND_DOWN,
70+
\NumberFormatter::ROUND_HALFDOWN,
71+
\NumberFormatter::ROUND_HALFEVEN,
72+
\NumberFormatter::ROUND_HALFUP,
73+
\NumberFormatter::ROUND_UP,
74+
\NumberFormatter::ROUND_CEILING,
7575
]);
7676
$resolver->setAllowedTypes('scale', 'int');
7777
$resolver->setAllowedTypes('symbol', ['bool', 'string']);
7878
$resolver->setDeprecated('rounding_mode', 'symfony/form', '5.1', function (Options $options, $roundingMode) {
7979
if (null === $roundingMode) {
80-
return sprintf('Not configuring the "rounding_mode" option is deprecated. It will default to "%s::ROUND_HALF_UP" in Symfony 6.0.', PercentToLocalizedStringTransformer::class);
80+
return 'Not configuring the "rounding_mode" option is deprecated. It will default to "\NumberFormatter::ROUND_HALFUP" in Symfony 6.0.';
8181
}
8282

8383
return '';

0 commit comments

Comments
 (0)