/**
* A normalizer that uses an objects own JsonSerializable implementation.
*
* @author Fred Cox <mcfedr@gmail.com>
*
* @final since Symfony 6.3
*/
class JsonSerializableNormalizer extends AbstractNormalizer
{ public function normalize(mixed
$object, string
$format = null, array
$context =
[]): array|string|int|float|bool|\ArrayObject|null
{ if ($this->
isCircularReference($object,
$context)) { return $this->
handleCircularReference($object,
$format,
$context);
} if (!
$object instanceof \JsonSerializable
) { throw new InvalidArgumentException(sprintf('The object must implement "%s".', \JsonSerializable::
class));
} if (!
$this->serializer instanceof NormalizerInterface
) { throw new LogicException('Cannot normalize object because injected serializer is not a normalizer.'
);
}