Skip to content

Instantly share code, notes, and snippets.

@kbosilkov
Forked from Epskampie/EntityNormalizer.php
Created April 21, 2020 21:39
Show Gist options
  • Save kbosilkov/592eb0658212627aafa8d0c4591cca1d to your computer and use it in GitHub Desktop.
Save kbosilkov/592eb0658212627aafa8d0c4591cca1d to your computer and use it in GitHub Desktop.
Automatically deserialize doctrine entities when using Symfony Serializer
<?php declare (strict_types = 1);
namespace App\Normalizer;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
/**
* Entity normalizer
*/
class EntityNormalizer implements DenormalizerInterface
{
/** @var EntityManagerInterface **/
protected $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
/**
* @inheritDoc
*/
public function supportsDenormalization($data, $type, $format = null)
{
return strpos($type, 'App\\Entity\\') === 0 && (is_numeric($data));
}
/**
* @inheritDoc
*/
public function denormalize($data, $class, $format = null, array $context = [])
{
return $this->em->find($class, $data);
}
}
services:
App\Normalizer\EntityNormalizer:
public: false
autowire: true
autoconfigure: true
tags: [serializer.normalizer]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment