<?php
declare(strict_types=1);
namespace PolPaymentPayolutionSW6\PayolutionApi\Serializer;
use Doctrine\Common\Annotations\AnnotationReader;
use PolPaymentPayolutionSW6\PayolutionApi\Serializer\NameConverter\UcfirstNameConverter;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory;
use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
use Symfony\Component\Serializer\NameConverter\MetadataAwareNameConverter;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\SerializerInterface;
class SerializerFactory
{
public static function createSerializer(): SerializerInterface
{
$classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));
$metadataAwareNameConverter = new MetadataAwareNameConverter($classMetadataFactory, new UcfirstNameConverter());
$objectNormalizer = new ObjectNormalizer($classMetadataFactory, $metadataAwareNameConverter);
$serializer = new Serializer([$objectNormalizer], [new XmlEncoder()]);
return $serializer;
}
}