SymfonyWorld Online 2020
100% online
30+ talks + workshops
Live + Replay watch talks later

Normalizers

Normalizers

Normalizers turn objects into arrays and vice versa. They implement Symfony\Component\Serializer\Normalizer\NormalizerInterface for normalizing (object to array) and Symfony\Component\Serializer\Normalizer\DenormalizerInterface for denormalizing (array to object).

Normalizers are enabled in the serializer passing them as its first argument:

use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;

$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers);

Built-in Normalizers

Symfony includes the following normalizers but you can also create your own normalizer:

  • Symfony\Component\Serializer\Normalizer\ObjectNormalizer to normalize PHP object using the PropertyAccessor component;
  • Symfony\Component\Serializer\Normalizer\DateTimeZoneNormalizer for DateTimeZone objects
  • Symfony\Component\Serializer\Normalizer\DateTimeNormalizer for objects implementing the DateTimeInterface interface
  • Symfony\Component\Serializer\Normalizer\DateIntervalNormalizer for DateInterval objects
  • Symfony\Component\Serializer\Normalizer\DataUriNormalizer to transform SplFileInfo objects in Data URIs
  • Symfony\Component\Serializer\Normalizer\CustomNormalizer to normalize PHP object using an object that implements Symfony\Component\Serializer\Normalizer\NormalizableInterface;
  • Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer to normalize PHP object using the getter and setter methods of the object;
  • Symfony\Component\Serializer\Normalizer\PropertyNormalizer to normalize PHP object using PHP reflection.
  • Symfony\Component\Serializer\Normalizer\ConstraintViolationListNormalizer for objects implementing the Symfony\Component\Validator\ConstraintViolationListInterface interface
  • Symfony\Component\Serializer\Normalizer\ProblemNormalizer for Symfony\Component\ErrorHandler\Exception\FlattenException objects
  • Symfony\Component\Serializer\Normalizer\JsonSerializableNormalizer to deal with objects implementing the JsonSerializable interface

This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.