Skip to content

Normalizer to serialize Ramsey Uuid with Symfony Serializer

License

Notifications You must be signed in to change notification settings

gbprod/uuid-normalizer

Repository files navigation

Uuid normalizer

Tests Latest Stable Version Total Downloads Latest Unstable Version

Normalizer to serialize Ramsey Uuid using Symfony Serializer.

Installation

composer require gbprod/uuid-normalizer

Why

By default, Symfony Serializer can't handle serialization and deserialization of Ramsey Uuid. You will have that kind of errors:

Not a time-based UUID
500 Internal Server Error - UnsupportedOperationException

Setup

In your app/config/service.yml file:

services:
  uuid_normalizer:
    class: GBProd\UuidNormalizer\UuidNormalizer
    tags:
      - { name: serializer.normalizer }

  uuid_denormalizer:
    class: GBProd\UuidNormalizer\UuidDenormalizer
    tags:
      - { name: serializer.normalizer }

Or using xml:

<services>
    <service id="uuid_normalizer" class="GBProd\UuidNormalizer\UuidNormalizer">
        <tag name="serializer.normalizer" />
    </service>
    <service id="uuid_denormalizer" class="GBProd\UuidNormalizer\UuidDenormalizer">
        <tag name="serializer.normalizer" />
    </service>
</services>

Or php:

use Symfony\Component\DependencyInjection\Definition;

$definition = new Definition('GBProd\UuidNormalizer\UuidNormalizer');
$definition->addTag('serializer.normalizer');
$container->setDefinition('uuid_normalizer', $definition);

$definition = new Definition('GBProd\UuidNormalizer\UuidDenormalizer');
$definition->addTag('serializer.normalizer');
$container->setDefinition('uuid_denormalizer', $definition);

Or building your own serializer:

use GBProd\UuidNormalizer\UuidDenormalizer;
use GBProd\UuidNormalizer\UuidNormalizer;

$serializer = new Serializer([
    new UuidNormalizer(),
    new UuidDenormalizer(),
    // Other normalizers...
]);

Requirements

  • PHP 7.4+

Contributing

Feel free to contribute, see CONTRIBUTING.md file for more informations.