10000 [Form] Add generics to DataTransformerInterface by VincentLanglet · Pull Request #47412 · symfony/symfony · GitHub
[go: up one dir, main page]

Skip to content

[Form] Add generics to DataTransformerInterface #47412

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Sep 13, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@

/**
* @author Bernhard Schussek <bschussek@gmail.com>
*
* @implements DataTransformerInterface<Collection, array>
*/
class CollectionToArrayTransformer implements DataTransformerInterface
{
Expand Down
11 changes: 7 additions & 4 deletions src/Symfony/Component/Form/DataTransformerInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
* Transforms a value between different representations.
*
* @author Bernhard Schussek <bschussek@gmail.com>
*
* @template TValue
* @template TTransformedValue
*/
interface DataTransformerInterface
{
Expand Down Expand Up @@ -53,9 +56,9 @@ interface DataTransformerInterface
* of the first data transformer outputs NULL, the second must be able to
* process that value.
*
* @param mixed $value The value in the original representation
* @param TValue|null $value The value in the original representation
*
* @return mixed
* @return TTransformedValue|null
*
* @throws TransformationFailedException when the transformation fails
*/
Expand All @@ -82,9 +85,9 @@ public function transform(mixed $value);
* By convention, reverseTransform() should return NULL if an empty string
* is passed.
*
* @param mixed $value The value in the transformed representation
* @param TTransformedValue|null $value The value in the transformed representation
*
* @return mixed
* @return TValue|null
*
* @throws TransformationFailedException when the transformation fails
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@

/**
* @author Bernhard Schussek <bschussek@gmail.com>
*
* @implements DataTransformerInterface<array, array>
*/
class ArrayToPartsTransformer implements DataTransformerInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@
use Symfony\Component\Form\DataTransformerInterface;
use Symfony\Component\Form\Exception\InvalidArgumentException;

/**
* @template TTransformedValue
* @implements DataTransformerInterface<\DateTimeInterface, TTransformedValue>
*/
abstract class BaseDateTimeTransformer implements DataTransformerInterface
{
protected static $formats = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
*
* @author Bernhard Schussek <bschussek@gmail.com>
* @author Florian Eckerstorfer <florian@eckerstorfer.org>
*
* @implements DataTransformerInterface<bool, string>
*/
class BooleanToStringTransformer implements DataTransformerInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@

/**
* @author Bernhard Schussek <bschussek@gmail.com>
*
* @implements DataTransformerInterface<string, string>
*/
class ChoiceToValueTransformer implements DataTransformerInterface
{
A8C6 Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@

/**
* @author Bernhard Schussek <bschussek@gmail.com>
*
* @implements DataTransformerInterface<array, array>
*/
class ChoicesToValuesTransformer implements DataTransformerInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
* Transforms between a normalized date interval and an interval string/array.
*
* @author Steffen Roßkamp <steffen.rosskamp F438 @gimmickmedia.de>
*
* @implements DataTransformerInterface<\DateInterval, array>
*/
class DateIntervalToArrayTransformer implements DataTransformerInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
* Transforms between a date string and a DateInterval object.
*
* @author Steffen Roßkamp <steffen.rosskamp@gimmickmedia.de>
*
* @implements DataTransformerInterface<\DateInterval, string>
*/
class DateIntervalToStringTransformer implements DataTransformerInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
* Transforms between a DateTimeImmutable object and a DateTime object.
*
* @author Valentin Udaltsov <udaltsov.valentin@gmail.com>
*
* @implements DataTransformerInterface<\DateTimeImmutable, \DateTime>
*/
final class DateTimeImmutableToDateTimeTransformer implements DataTransformerInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
*
* @author Bernhard Schussek <bschussek@gmail.com>
* @author Florian Eckerstorfer <florian@eckerstorfer.org>
*
* @extends BaseDateTimeTransformer<array>
*/
class DateTimeToArrayTransformer extends BaseDateTimeTransformer
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
* @author Franz Wilding <franz.wilding@me.com>
* @author Bernhard Schussek <bschussek@gmail.com>
* @author Fred Cox <mcfedr@gmail.com>
*
* @extends BaseDateTimeTransformer<string>
*/
class DateTimeToHtml5LocalDateTimeTransformer extends BaseDateTimeTransformer
{
Expand All @@ -29,7 +31,7 @@ class DateTimeToHtml5LocalDateTimeTransformer extends BaseDateTimeTransformer
* input is an RFC3339 date followed by 'T', followed by an RFC3339 time.
* https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-local-date-and-time-string
*
* @param \DateTime|\DateTimeInterface $dateTime A DateTime object
* @param \DateTimeInterface $dateTime
*
* @throws TransformationFailedException If the given value is not an
* instance of \DateTime or \DateTimeInterface
Expand All @@ -40,8 +42,8 @@ public function transform(mixed $dateTime): string
return '';
}

if (!$dateTime instanceof \DateTime && !$dateTime instanceof \DateTimeInterface) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DateTime implements DateTimeInterface

throw new TransformationFailedException('Expected a \DateTime or \DateTimeInterface.');
if (!$dateTime instanceof \DateTimeInterface) {
throw new TransformationFailedException('Expected a \DateTimeInterface.');
}

if ($this->inputTimezone !== $this->outputTimezone) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
*
* @author Bernhard Schussek <bschussek@gmail.com>
* @author Florian Eckerstorfer <florian@eckerstorfer.org>
*
* @extends BaseDateTimeTransformer<string>
*/
class DateTimeToLocalizedStringTransformer extends BaseDateTimeTransformer
{
Expand Down Expand Up @@ -95,7 +97,7 @@ public function transform(mixed $dateTime): string
/**
* Transforms a localized date string/array into a normalized date.
*
* @param string|array $value Localized date string/array
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The method start with if (!\is_string($value)) {

* @param string $value Localized date string
*
* @throws TransformationFailedException if the given value is not a string,
* if the date could not be parsed
Expand Down
< F438 td class="blob-num blob-num-expandable" colspan="2"> Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@

/**
* @author Bernhard Schussek <bschussek@gmail.com>
*
* @extends BaseDateTimeTransformer<string>
*/
class DateTimeToRfc3339Transformer extends BaseDateTimeTransformer
{
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
*
* @author Bernhard Schussek <bschussek@gmail.com>
* @author Florian Eckerstorfer <florian@eckerstorfer.org>
*
* @extends BaseDateTimeTransformer<string>
*/
class DateTimeToStringTransformer extends BaseDateTimeTransformer
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
*
* @author Bernhard Schussek <bschussek@gmail.com>
* @author Florian Eckerstorfer <florian@eckerstorfer.org>
*
* @extends BaseDateTimeTransformer<int|numeric-string>
*/
class DateTimeToTimestampTransformer extends BaseDateTimeTransformer
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
* Transforms between a timezone identifier string and a DateTimeZone object.
*
* @author Roland Franssen <franssen.roland@gmail.com>
*
* @implements DataTransformerInterface<\DateTimeZone|array<\DateTimeZone>, string|array<string>>
*/
class DateTimeZoneToStringTransformer implements DataTransformerInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
* Transforms between a timezone identifier string and a IntlTimeZone object.
*
* @author Roland Franssen <franssen.roland@gmail.com>
*
* @implements DataTransformerInterface<\IntlTimeZone|array<\IntlTimeZone>, string|array<string>>
*/
class IntlTimeZoneToStringTransformer implements DataTransformerInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
*
* @author Bernhard Schussek <bschussek@gmail.com>
* @author Florian Eckerstorfer <florian@eckerstorfer.org>
*
* @implements DataTransformerInterface<int|float, string>
*/
class NumberToLocalizedStringTransformer implements DataTransformerInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
*
* @author Bernhard Schussek <bschussek@gmail.com>
* @author Florian Eckerstorfer <florian@eckerstorfer.org>
*
* @implements DataTransformerInterface<int|float, string>
*/
class PercentToLocalizedStringTransformer implements DataTransformerInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
use Symfony\Component\Form\DataTransformerInterface;
use Symfony\Component\Form\Exception\TransformationFailedException;

/**
* @implements DataTransformerInterface<numeric-string, float>
*/
class StringToFloatTransformer implements DataTransformerInterface
{
private ?int $scale;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
* Transforms between a ULID string and a Ulid object.
*
* @author Pavel Dyakonov <wapinet@mail.ru>
*
* @implements DataTransformerInterface<Ulid, string>
*/
class UlidToStringTransformer implements DataTransformerInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
* Transforms between a UUID string and a Uuid object.
*
* @author Pavel Dyakonov <wapinet@mail.ru>
*
* @implements DataTransformerInterface<Uuid, string>
*/
class UuidToStringTransformer implements DataTransformerInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@

/**
* @author Bernhard Schussek <bschussek@gmail.com>
*
* @implements DataTransformerInterface<mixed, array>
*/
class ValueToDuplicatesTransformer implements DataTransformerInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
* Transforms between an ISO 8601 week date string and an array.
*
* @author Damien Fayet <damienf1521@gmail.com>
*
* @implements DataTransformerInterface<string, array{year: int|null, week: int|null}>
*/
class WeekToArrayTransformer implements DataTransformerInterface
{
Expand Down
0