* * 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\BadMethodCallException; use Symfony\Component\Serializer\Exception\ExceptionInterface; use Symfony\Component\Serializer\Exception\ExtraAttributesException; use Symfony\Component\Serializer\Exception\InvalidArgumentException; use Symfony\Component\Serializer\Exception\LogicException; use Symfony\Component\Serializer\Exception\RuntimeException; use Symfony\Component\Serializer\Exception\UnexpectedValueException; /** * @author Jordi Boggiano */ interface DenormalizerInterface { /** * Denormalizes data back into an object of the given class. * * @param mixed $data Data to restore * @param string $type The expected class to instantiate * @param string $format Format the given data was extracted from * @param array $context Options available to the denormalizer * * @return mixed * * @throws BadMethodCallException Occurs when the normalizer is not called in an expected context * @throws InvalidArgumentException Occurs when the arguments are not coherent or not supported * @throws UnexpectedValueException Occurs when the item cannot be hydrated with the given data * @throws ExtraAttributesException Occurs when the item doesn't have attribute to receive given data * @throws LogicException Occurs when the normalizer is not supposed to denormalize * @throws RuntimeException Occurs if the class cannot be instantiated * @throws ExceptionInterface Occurs for all the other cases of errors */ public function denormalize($data, string $type, string $format = null, array $context = []); /** * Checks whether the given class is supported for denormalization by this normalizer. * * @param mixed $data Data to denormalize from * @param string $type The class to which the data should be denormalized * @param string $format The format being deserialized from * * @return bool */ public function supportsDenormalization($data, string $type, string $format = null); }