8000 [Form] Add generics to DataTransformerInterface · upyx/symfony@dff26d3 · GitHub
[go: up one dir, main page]

Skip to content

Commit dff26d3

Browse files
VincentLangletfabpot
authored andcommitted
[Form] Add generics to DataTransformerInterface
1 parent 8084eb8 commit dff26d3

25 files changed

+62
-8
lines changed

src/Symfony/Bridge/Doctrine/Form/DataTransformer/CollectionToArrayTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
/**
2020
* @author Bernhard Schussek <bschussek@gmail.com>
21+
*
22+
* @implements DataTransformerInterface<Collection, array>
2123
*/
2224
class CollectionToArrayTransformer implements DataTransformerInterface
2325
{

src/Symfony/Component/Form/DataTransformerInterface.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
* Transforms a value between different representations.
1818
*
1919
* @author Bernhard Schussek <bschussek@gmail.com>
20+
*
21+
* @template TValue
22+
* @template TTransformedValue
2023
*/
2124
interface DataTransformerInterface
2225
{
@@ -53,9 +56,9 @@ interface DataTransformerInterface
5356
* of the first data transformer outputs NULL, the second must be able to
5457
* process that value.
5558
*
56-
* @param mixed $value The value in the original representation
59+
* @param TValue|null $value The value in the original representation
5760
*
58-
* @return mixed
61+
* @return TTransformedValue|null
5962
*
6063
* @throws TransformationFailedException when the transformation fails
6164
*/
@@ -82,9 +85,9 @@ public function transform(mixed $value);
8285
* By convention, reverseTransform() should return NULL if an empty string
8386
* is passed.
8487
*
85-
* @param mixed $value The value in the transformed representation
88+
* @param TTransformedValue|null $value The value in the transformed representation
8689
*
87-
* @return mixed
90+
* @return TValue|null
8891
*
8992
* @throws TransformationFailedException when the transformation fails
9093
*/

src/Symfony/Component/Form/Extension/Core/DataTransformer/ArrayToPartsTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
/**
1818
* @author Bernhard Schussek <bschussek@gmail.com>
19+
*
20+
* @implements DataTransformerInterface<array, array>
1921
*/
2022
class ArrayToPartsTransformer implements DataTransformerInterface
2123
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/BaseDateTimeTransformer.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
use Symfony\Component\Form\DataTransformerInterface;
1515
use Symfony\Component\Form\Exception\InvalidArgumentException;
1616

17+
/**
18+
* @template TTransformedValue
19+
* @implements DataTransformerInterface<\DateTimeInterface, TTransformedValue>
20+
*/
1721
abstract class BaseDateTimeTransformer implements DataTransformerInterface
1822
{
1923
protected static $formats = [

src/Symfony/Component/Form/Extension/Core/DataTransformer/BooleanToStringTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
*
2121
* @author Bernhard Schussek <bschussek@gmail.com>
2222
* @author Florian Eckerstorfer <florian@eckerstorfer.org>
23+
*
24+
* @implements DataTransformerInterface<bool, string>
2325
*/
2426
class BooleanToStringTransformer implements DataTransformerInterface
2527
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/ChoiceToValueTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
/**
1919
* @author Bernhard Schussek <bschussek@gmail.com>
20+
*
21+
* @implements DataTransformerInterface<string, string>
2022
*/
2123
class ChoiceToValueTransformer implements DataTransformerInterface
2224
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/ChoicesToValuesTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
/**
1919
* @author Bernhard Schussek <bschussek@gmail.com>
20+
*
21+
* @implements DataTransformerInterface<array, array>
2022
*/
2123
class ChoicesToValuesTransformer implements DataTransformerInterface
2224
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/DateIntervalToArrayTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
* Transforms between a normalized date interval and an interval string/array.
2020
*
2121
* @author Steffen Roßkamp <steffen.rosskamp@gimmickmedia.de>
22+
*
23+
* @implements DataTransformerInterface<\DateInterval, array>
2224
*/
2325
class DateIntervalToArrayTransformer implements DataTransformerInterface
2426
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/DateIntervalToStringTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
* Transforms between a date string and a DateInterval object.
2020
*
2121
* @author Steffen Roßkamp <steffen.rosskamp@gimmickmedia.de>
22+
*
23+
* @implements DataTransformerInterface<\DateInterval, string>
2224
*/
2325
class DateIntervalToStringTransformer implements DataTransformerInterface
2426
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/DateTimeImmutableToDateTimeTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
* Transforms between a DateTimeImmutable object and a DateTime object.
1919
*
2020
* @author Valentin Udaltsov <udaltsov.valentin@gmail.com>
21+
*
22+
* @implements DataTransformerInterface<\DateTimeImmutable, \DateTime>
2123
*/
2224
final class DateTimeImmutableToDateTimeTransformer implements DataTransformerInterface
2325
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/DateTimeToArrayTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*
1919
* @author Bernhard Schussek <bschussek@gmail.com>
2020
* @author Florian Eckerstorfer <florian@eckerstorfer.org>
21+
*
22+
* @extends BaseDateTimeTransformer<array>
2123
*/
2224
class DateTimeToArrayTransformer extends BaseDateTimeTransformer
2325
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/DateTimeToHtml5LocalDateTimeTransformer.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
* @author Franz Wilding <franz.wilding@me.com>
1818
* @author Bernhard Schussek <bschussek@gmail.com>
1919
* @author Fred Cox <mcfedr@gmail.com>
20+
*
21+
* @extends BaseDateTimeTransformer<string>
2022
*/
2123
class DateTimeToHtml5LocalDateTimeTransformer extends BaseDateTimeTransformer
2224
{
@@ -29,7 +31,7 @@ class DateTimeToHtml5LocalDateTimeTransformer extends BaseDateTimeTransformer
2931
* input is an RFC3339 date followed by 'T', followed by an RFC3339 time.
3032
* https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-local-date-and-time-string
3133
*
32-
* @param \DateTime|\DateTimeInterface $dateTime A DateTime object
34+
* @param \DateTimeInterface $dateTime
3335
*
3436
* @throws TransformationFailedException If the given value is not an
3537
* instance of \DateTime or \DateTimeInterface
@@ -40,8 +42,8 @@ public function transform(mixed $dateTime): string
4042
return '';
4143
}
4244

43-
if (!$dateTime instanceof \DateTime && !$dateTime instanceof \DateTimeInterface) {
44-
throw new TransformationFailedException('Expected a \DateTime or \DateTimeInterface.');
45+
if (!$dateTime instanceof \DateTimeInterface) {
46+
throw new TransformationFailedException('Expected a \DateTimeInterface.');
4547
}
4648

4749
if ($this->inputTimezone !== $this->outputTimezone) {

src/Symfony/Component/Form/Extension/Core/DataTransformer/DateTimeToLocalizedStringTransformer.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
*
2020
* @author Bernhard Schussek <bschussek@gmail.com>
2121
* @author Florian Eckerstorfer <florian@eckerstorfer.org>
22+
*
23+
* @extends BaseDateTimeTransformer<string>
2224
*/
2325
class DateTimeToLocalizedStringTransformer extends BaseDateTimeTransformer
2426
{
@@ -95,7 +97,7 @@ public funct F438 ion transform(mixed $dateTime): string
9597
/**
9698
* Transforms a localized date string/array into a normalized date.
9799
*
98-
* @param string|array $value Localized date string/array
100+
* @param string $value Localized date string
99101
*
100102
* @throws TransformationFailedException if the given value is not a string,
101103
* if the date could not be parsed

src/Symfony/Component/Form/Extension/Core/DataTransformer/DateTimeToRfc3339Transformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
/**
1717
* @author Bernhard Schussek <bschussek@gmail.com>
18+
*
19+
* @extends BaseDateTimeTransformer<string>
1820
*/
1921
class DateTimeToRfc3339Transformer extends BaseDateTimeTransformer
2022
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/DateTimeToStringTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*
1919
* @author Bernhard Schussek <bschussek@gmail.com>
2020
* @author Florian Eckerstorfer <florian@eckerstorfer.org>
21+
*
22+
* @extends BaseDateTimeTransformer<string>
2123
*/
2224
class DateTimeToStringTransformer extends BaseDateTimeTransformer
2325
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/DateTimeToTimestampTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*
1919
* @author Bernhard Schussek <bschussek@gmail.com>
2020
* @author Florian Eckerstorfer <florian@eckerstorfer.org>
21+
*
22+
* @extends BaseDateTimeTransformer<int|numeric-string>
2123
*/
2224
class DateTimeToTimestampTransformer extends BaseDateTimeTransformer
2325
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/DateTimeZoneToStringTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
* Transforms between a timezone identifier string and a DateTimeZone object.
1919
*
2020
* @author Roland Franssen <franssen.roland@gmail.com>
21+
*
22+
* @implements DataTransformerInterface<\DateTimeZone|array<\DateTimeZone>, string|array<string>>
2123
*/
2224
class DateTimeZoneToStringTransformer implements DataTransformerInterface
2325
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/IntlTimeZoneToStringTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
* Transforms between a timezone identifier string and a IntlTimeZone object.
1919
*
2020
* @author Roland Franssen <franssen.roland@gmail.com>
21+
*
22+
* @implements DataTransformerInterface<\IntlTimeZone|array<\IntlTimeZone>, string|array<string>>
2123
*/
2224
class IntlTimeZoneToStringTransformer implements DataTransformerInterface
2325
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
*
2121
* @author Bernhard Schussek <bschussek@gmail.com>
2222
* @author Florian Eckerstorfer <florian@eckerstorfer.org>
23+
*
24+
* @implements DataTransformerInterface<int|float, string>
2325
*/
2426
class NumberToLocalizedStringTransformer implements DataTransformerInterface
2527
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/PercentToLocalizedStringTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
*
2121
* @author Bernhard Schussek <bschussek@gmail.com>
2222
* @author Florian Eckerstorfer <florian@eckerstorfer.org>
23+
*
24+
* @implements DataTransformerInterface<int|float, string>
2325
*/
2426
class PercentToLocalizedStringTransformer implements DataTransformerInterface
2527
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/StringToFloatTransformer.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
use Symfony\Component\Form\DataTransformerInterface;
1515
use Symfony\Component\Form\Exception\TransformationFailedException;
1616

17+
/**
18+
* @implements DataTransformerInterface<numeric-string, float>
19+
*/
1720
class StringToFloatTransformer implements DataTransformerInterface
1821
{
1922
private ?int $scale;

src/Symfony/Component/Form/Extension/Core/DataTransformer/UlidToStringTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
* Transforms between a ULID string and a Ulid object.
2020
*
2121
* @author Pavel Dyakonov <wapinet@mail.ru>
22+
*
23+
* @implements DataTransformerInterface<Ulid, string>
2224
*/
2325
class UlidToStringTransformer implements DataTransformerInterface
2426
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/UuidToStringTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
* Transforms between a UUID string and a Uuid object.
2020
*
2121
* @author Pavel Dyakonov <wapinet@mail.ru>
22+
*
23+
* @implements DataTransformerInterface<Uuid, string>
2224
*/
2325
class UuidToStringTransformer implements DataTransformerInterface
2426
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/ValueToDuplicatesTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
/**
1818
* @author Bernhard Schussek <bschussek@gmail.com>
19+
*
20+
* @implements DataTransformerInterface<mixed, array>
1921
*/
2022
class ValueToDuplicatesTransformer implements DataTransformerInterface
2123
{

src/Symfony/Component/Form/Extension/Core/DataTransformer/WeekToArrayTransformer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
* Transforms between an ISO 8601 week date string and an array.
1919
*
2020
* @author Damien Fayet <damienf1521@gmail.com>
21+
*
22+
* @implements DataTransformerInterface<string, array{year: int|null, week: int|null}>
2123
*/
2224
class WeekToArrayTransformer implements DataTransformerInterface
2325
{

0 commit comments

Comments
 (0)
0