* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Serializer\Normalizer; use Symfony\Component\Serializer\Exception\CircularReferenceException; use Symfony\Component\Serializer\Exception\ExceptionInterface; use Symfony\Component\Serializer\Exception\InvalidArgumentException; use Symfony\Component\Serializer\Exception\LogicException; /** * @author Jordi Boggiano */ interface NormalizerInterface { /** * Normalizes an object into a set of arrays/scalars. * * @param mixed $object Object to normalize * @param string|null $format Format the normalization result will be encoded as * @param array $context Context options for the normalizer * * @return array|string|int|float|bool|\ArrayObject|null \ArrayObject is used to make sure an empty object is encoded as an object not an array * * @throws InvalidArgumentException Occurs when the object given is not a supported type for the normalizer * @throws CircularReferenceException Occurs when the normalizer detects a circular reference when no circular * reference handler can fix it * @throws LogicException Occurs when the normalizer is not called in an expected context * @throws ExceptionInterface Occurs for all the other cases of errors */ public function normalize(mixed $object, ?string $format = null, array $context = []): array|string|int|float|bool|\ArrayObject|null; /** * Checks whether the given class is supported for normalization by this normalizer. * * @param mixed $data Data to normalize * @param string|null $format The format being (de-)serialized from or into */ public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool; /** * Returns the types potentially supported by this normalizer. * * For each supported formats (if applicable), the supported types should be * returned as keys, and each type should be mapped to a boolean indicating * if the result of supportsNormalization() can be cached or not * (a result cannot be cached when it depends on the context or on the data.) * A null value means that the normalizer does not support the corresponding * type. * * Use type "object" to match any classes or interfaces, * and type "*" to match any types. * * @return array */ public function getSupportedTypes(?string $format): array; }