Converts between objects with getter and setter methods and arrays.
The normalization process looks at all public methods and calls the ones which have a name starting with get and take no parameters. The result is a map from property names (method name stripped of the get prefix and converted to lower case) to property values. Property values are normalized through the serializer.
The denormalization first looks at the constructor of the given class to see if any of the parameters have the same name as one of the properties. The constructor is then called with all parameters or an exception is thrown if any required parameters were not present as properties. Then the denormalizer walks through the given map of property names to property values to see if a setter method exists for any of the properties. If a setter exists it is called with the property value. No automatic denormalization of the value takes place.
object|null | extractObjectToPopulate(string $class, array $context, string $key = null) Extract the object_to_populate field from the context if it exists and is an instance of the provided $class. | from ObjectToPopulateTrait |
| setSerializer(SerializerInterface $serializer) Sets the serializer. | from SerializerAwareTrait |
| __construct(ClassMetadataFactoryInterface $classMetadataFactory = null, NameConverterInterface $nameConverter = null, PropertyTypeExtractorInterface $propertyTypeExtractor = null, ClassDiscriminatorResolverInterface $classDiscriminatorResolver = null) Sets the {@link ClassMetadataFactoryInterface} to use. | from AbstractObjectNormalizer |
AbstractNormalizer | setCircularReferenceLimit(int $circularReferenceLimit) Set circular reference limit. | from AbstractNormalizer |
AbstractNormalizer | setCircularReferenceHandler(callable $circularReferenceHandler) Set circular reference handler. | from AbstractNormalizer |
AbstractNormalizer | setCallbacks(array $callbacks) Set normalization callbacks. | from AbstractNormalizer |
AbstractNormalizer | setIgnoredAttributes(array $ignoredAttributes) Set ignored attributes for normalization and denormalization. | from AbstractNormalizer |
bool | hasCacheableSupportsMethod() | |
bool | isCircularReference(object $object, array $context) Detects if the configured circular reference limit is reached. | from AbstractNormalizer |
mixed | handleCircularReference(object $object) Handles a circular reference. | from AbstractNormalizer |
string[]|AttributeMetadataInterface[]|bool | getAllowedAttributes(string|object $classOrObject, array $context, bool $attributesAsString = false) Gets attributes to normalize using groups. | from AbstractNormalizer |
bool | isAllowedAttribute(object|string $classOrObject, string $attribute, string|null $format = null, array $context = array()) Is this attribute allowed? | from AbstractNormalizer |
array | prepareForDenormalization(object|array $data) Normalizes the given data to an array. It's particularly useful during the denormalization process. | from AbstractNormalizer |
ReflectionMethod|null | getConstructor(array $data, string $class, array $context, ReflectionClass $reflectionClass, array|bool $allowedAttributes) Returns the method to use to construct an object. This method must be either the object constructor or static. | from AbstractNormalizer |
object | instantiateObject(array $data, string $class, array $context, ReflectionClass $reflectionClass, array|bool $allowedAttributes, string $format = null) Instantiates an object using constructor parameters when needed. | from AbstractObjectNormalizer |
array | createChildContext(array $parentContext, string $attribute) | from AbstractNormalizer |
bool | supportsNormalization(mixed $data, string $format = null) Checks whether the given class is supported for normalization by this normalizer. | |
array|string|int|float|bool | normalize(mixed $object, string $format = null, array $context = array()) Normalizes an object into a set of arrays/scalars. | from AbstractObjectNormalizer |
string[] | getAttributes(object $object, string|null $format = null, array $context) Gets and caches attributes for the given object, format and context. | from AbstractObjectNormalizer |
string[] | extractAttributes(object $object, string|null $format = null, array $context = array()) Extracts attributes to normalize from the class of the given object, format and context. | |
mixed | getAttributeValue(object $object, string $attribute, string|null $format = null, array $context = array()) Gets the attribute value. | |
void | setMaxDepthHandler(callable|null $handler) Sets a handler function that will be called when the max depth is reached. | from AbstractObjectNormalizer |
bool | supportsDenormalization(mixed $data, string $type, string $format = null) Checks whether the given class is supported for denormalization by this normalizer. | |
object | denormalize(mixed $data, string $class, string $format = null, array $context = array()) Denormalizes data back into an object of the given class. | from AbstractObjectNormalizer |
| setAttributeValue(object $object, string $attribute, mixed $value, string|null $format = null, array $context = array()) Sets attribute value. | |
Extract the object_to_populate
field from the context if it exists and is an instance of the provided $class.
Parameters
string | $class | The class the object should be |
array | $context | The denormalization context |
string | $key | They in which to look for the object to populate. Keeps backwards compatibility with AbstractNormalizer . |
Return Value
object|null | an object if things check out, null otherwise |
Sets the serializer.
Parameters
Sets the {@link ClassMetadataFactoryInterface} to use.
Parameters
AbstractNormalizer
setCircularReferenceLimit(int $circularReferenceLimit)
Set circular reference limit.
Parameters
int | $circularReferenceLimit | Limit of iterations for the same object |
Return Value
AbstractNormalizer
setCircularReferenceHandler(callable $circularReferenceHandler)
Set circular reference handler.
Parameters
callable | $circularReferenceHandler | |
Return Value
Set normalization callbacks.
Parameters
array | $callbacks | Help normalize the result |
Return Value
Exceptions
AbstractNormalizer
setIgnoredAttributes(array $ignoredAttributes)
Set ignored attributes for normalization and denormalization.
Parameters
Return Value
bool
hasCacheableSupportsMethod()
Return Value
protected bool
isCircularReference(object $object, array $context)
Detects if the configured circular reference limit is reached.
Parameters
object | $object | |
array | $context | |
Return Value
Exceptions
protected mixed
handleCircularReference(object $object)
Handles a circular reference.
If a circular reference handler is set, it will be called. Otherwise, a {@class CircularReferenceException} will be thrown.
Parameters
Return Value
Exceptions
protected string[]|AttributeMetadataInterface[]|bool
getAllowedAttributes(string|object $classOrObject, array $context, bool $attributesAsString = false)
Gets attributes to normalize using groups.
Parameters
string|object | $classOrObject | |
array | $context | |
bool | $attributesAsString | If false, return an array of {@link AttributeMetadataInterface} |
Return Value
Exceptions
LogicException | if the 'allow_extra_attributes' context variable is false and no class metadata factory is provided |
protected bool
isAllowedAttribute(object|string $classOrObject, string $attribute, string|null $format = null, array $context = array())
Is this attribute allowed?
Parameters
object|string | $classOrObject | |
string | $attribute | |
string|null | $format | |
array | $context | |
Return Value
protected array
prepareForDenormalization(object|array $data)
Normalizes the given data to an array. It's particularly useful during the denormalization process.
Parameters
Return Value
protected ReflectionMethod|null
getConstructor(array $data, string $class, array $context, ReflectionClass $reflectionClass, array|bool $allowedAttributes)
Returns the method to use to construct an object. This method must be either the object constructor or static.
Parameters
array | $data | |
string | $class | |
array | $context | |
ReflectionClass | $reflectionClass | |
array|bool | $allowedAttributes | |
Return Value
protected object
instantiateObject(array $data, string $class, array $context, ReflectionClass $reflectionClass, array|bool $allowedAttributes, string $format = null)
Instantiates an object using constructor parameters when needed.
This method also allows to denormalize data into an existing object if it is present in the context with the object_to_populate. This object is removed from the context before being returned to avoid side effects when recursively normalizing an object graph.
Parameters
array | $data | |
string | $class | |
array | $context | |
ReflectionClass | $reflectionClass | |
array|bool | $allowedAttributes | |
string | $format | |
Return Value
Exceptions
protected array
createChildContext(array $parentContext, string $attribute)
Parameters
array | $parentContext | |
string | $attribute | |
Return Value
bool
supportsNormalization(mixed $data, string $format = null)
Checks whether the given class is supported for normalization by this normalizer.
Parameters
mixed | $data | Data to normalize |
string | $format | The format being (de-)serialized from or into |
Return Value
array|string|int|float|bool
normalize(mixed $object, string $format = null, array $context = array())
Normalizes an object into a set of arrays/scalars.
Parameters
mixed | $object | Object to normalize |
string | $format | Format the normalization result will be encoded as |
array | $context | Context options for the normalizer |
Return Value
array|string|int|float|bool | |
Exceptions
protected string[]
getAttributes(object $object, string|null $format = null, array $context)
Gets and caches attributes for the given object, format and context.
Parameters
object | $object | |
string|null | $format | |
array | $context | |
Return Value
Extracts attributes to normalize from the class of the given object, format and context.
Parameters
object | $object | |
string|null | $format | |
array | $context | |
Return Value
protected mixed
getAttributeValue(object $object, string $attribute, string|null $format = null, array $context = array())
Gets the attribute value.
Parameters
object | $object | |
string | $attribute | |
string|null | $format | |
array | $context | |
Return Value
void
setMaxDepthHandler(callable|null $handler)
Sets a handler function that will be called when the max depth is reached.
Parameters
Return Value
bool
supportsDenormalization(mixed $data, string $type, string $format = null)
Checks whether the given class is supported for denormalization by this normalizer.
Parameters
mixed | $data | Data to denormalize from |
string | $type | The class to which the data should be denormalized |
string | $format | The format being deserialized from |
Return Value
object
denormalize(mixed $data, string $class, string $format = null, array $context = array())
Denormalizes data back into an object of the given class.
Parameters
mixed | $data | Data to restore |
string | $class | The expected class to instantiate |
string | $format | Format the given data was extracted from |
array | $context | Options available to the denormalizer |
Return Value
Exceptions
protected
setAttributeValue(object $object, string $attribute, mixed $value, string|null $format = null, array $context = array())
Sets attribute value.
Parameters
object | $object | |
string | $attribute | |
mixed | $value | |
string|null | $format | |
array | $context | |