Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
11 / 11
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
TranslationNormalizer
100.00% covered (success)
100.00%
11 / 11
100.00% covered (success)
100.00%
2 / 2
5
100.00% covered (success)
100.00%
1 / 1
 supportsNormalization
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
2
 normalize
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2namespace Apie\Serializer\Normalizers;
3
4use Apie\Core\ContextConstants;
5use Apie\Core\Translator\ApieTranslatorInterface;
6use Apie\Core\Translator\Lists\TranslationStringSet;
7use Apie\Core\Translator\ValueObjects\AbstractTranslation;
8use Apie\Core\ValueObjects\Utils;
9use Apie\Serializer\Context\ApieSerializerContext;
10use Apie\Serializer\Interfaces\NormalizerInterface;
11
12class TranslationNormalizer implements NormalizerInterface
13{
14    public function supportsNormalization(
15        mixed $object,
16        ApieSerializerContext $apieSerializerContext
17    ): bool {
18        return $object instanceof AbstractTranslation || $object instanceof TranslationStringSet;
19    }
20    public function normalize(
21        mixed $object,
22        ApieSerializerContext $apieSerializerContext
23    ): string {
24        $context = $apieSerializerContext->getContext();
25        if ($context->hasContext(ContextConstants::ACCEPT_LOCALE)) {
26            $context = $context->withContext(
27                ContextConstants::LOCALE,
28                $context->getContext(ContextConstants::ACCEPT_LOCALE)
29            );
30        }
31        $translator = $context->getContext(ApieTranslatorInterface::class, false);
32
33        if ($translator instanceof ApieTranslatorInterface) {
34            return $translator->getGeneralTranslation($context, $object) ?? Utils::toString($object);
35        }
36
37        return Utils::toString($object);
38    }
39}