Skip to content

Commit 3d545be

Browse files
committed
Throw error if the number is too high on moneyTransformer
1 parent 2f11373 commit 3d545be

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

Extension/Core/DataTransformer/MoneyToLocalizedStringTransformer.php

+10-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,16 @@ public function reverseTransform(mixed $value): int|float|null
6969
$value = parent::reverseTransform($value);
7070
if (null !== $value && 1 !== $this->divisor) {
7171
$value = (string) ($value * $this->divisor);
72-
$value = 'integer' === $this->modelType ? (int) $value : (float) $value;
72+
73+
if ('float' === $this->modelType) {
74+
return (float) $value;
75+
}
76+
77+
if ($value > \PHP_INT_MAX || $value < \PHP_INT_MIN) {
78+
throw new TransformationFailedException(sprintf("The value '%d' is too large you should pass the 'model_type' to 'float'.", $value));
79+
}
80+
81+
$value = (int) $value;
7382
}
7483

7584
return $value;

Tests/Extension/Core/DataTransformer/MoneyToLocalizedStringTransformerTest.php

+9
Original file line numberDiff line numberDiff line change
@@ -118,4 +118,13 @@ public function testValidNumericValuesWithNonDotDecimalPointCharacter()
118118

119119
$this->assertSame('0,0035', $transformer->transform(12 / 34));
120120
}
121+
122+
public function testHighIntNumberConversion()
123+
{
124+
$transformer = new MoneyToLocalizedStringTransformer(4, null, null, 100);
125+
126+
$this->expectException(TransformationFailedException::class);
127+
128+
$transformer->reverseTransform(111111111111111110.00);
129+
}
121130
}

0 commit comments

Comments
 (0)