vendor/api-platform/core/src/Hydra/Serializer/ErrorNormalizer.php line 44
<?php/** This file is part of the API Platform project.** (c) Kévin Dunglas <dunglas@gmail.com>** For the full copyright and license information, please view the LICENSE* file that was distributed with this source code.*/declare(strict_types=1);namespace ApiPlatform\Hydra\Serializer;use ApiPlatform\Api\UrlGeneratorInterface;use ApiPlatform\Problem\Serializer\ErrorNormalizerTrait;use Symfony\Component\ErrorHandler\Exception\FlattenException;use Symfony\Component\Serializer\Normalizer\CacheableSupportsMethodInterface;use Symfony\Component\Serializer\Normalizer\NormalizerInterface;/*** Converts {@see \Exception} or {@see FlattenException} to a Hydra error representation.** @author Kévin Dunglas <dunglas@gmail.com>* @author Samuel ROZE <samuel.roze@gmail.com>*/final class ErrorNormalizer implements NormalizerInterface, CacheableSupportsMethodInterface{use ErrorNormalizerTrait;public const FORMAT = 'jsonld';public const TITLE = 'title';private array $defaultContext = [self::TITLE => 'An error occurred'];public function __construct(private readonly UrlGeneratorInterface $urlGenerator, private readonly bool $debug = false, array $defaultContext = []){$this->defaultContext = array_merge($this->defaultContext, $defaultContext);}/*** {@inheritdoc}*/public function normalize(mixed $object, string $format = null, array $context = []): array|string|int|float|bool|\ArrayObject|null{$data = ['@context' => $this->urlGenerator->generate('api_jsonld_context', ['shortName' => 'Error']),'@type' => 'hydra:Error','hydra:title' => $context[self::TITLE] ?? $this->defaultContext[self::TITLE],'hydra:description' => $this->getErrorMessage($object, $context, $this->debug),];if ($this->debug && null !== $trace = $object->getTrace()) {$data['trace'] = $trace;}return $data;}/*** {@inheritdoc}*/public function supportsNormalization(mixed $data, string $format = null, array $context = []): bool{return self::FORMAT === $format && ($data instanceof \Exception || $data instanceof FlattenException);}public function hasCacheableSupportsMethod(): bool{return true;}}