Chris@0: CHANGELOG Chris@0: ========= Chris@0: Chris@14: 3.4.0 Chris@14: ----- Chris@14: Chris@14: * added `AbstractObjectNormalizer::DISABLE_TYPE_ENFORCEMENT` context option Chris@14: to disable throwing an `UnexpectedValueException` on a type mismatch Chris@14: * added support for serializing `DateInterval` objects Chris@14: * added getter for extra attributes in `ExtraAttributesException` Chris@14: * improved `CsvEncoder` to handle variable nested structures Chris@14: * CSV headers can be passed to the `CsvEncoder` via the `csv_headers` serialization context variable Chris@14: * added `$context` when checking for encoding, decoding and normalizing in `Serializer` Chris@14: Chris@14: 3.3.0 Chris@14: ----- Chris@14: Chris@14: * added `SerializerPass` Chris@14: Chris@0: 3.1.0 Chris@0: ----- Chris@0: Chris@0: * added support for serializing objects that implement `JsonSerializable` Chris@0: * added the `DenormalizerAwareTrait` and `NormalizerAwareTrait` traits to Chris@0: support normalizer/denormalizer awareness Chris@0: * added the `DenormalizerAwareInterface` and `NormalizerAwareInterface` Chris@0: interfaces to support normalizer/denormalizer awareness Chris@0: * added a PSR-6 compatible adapter for caching metadata Chris@0: * added a `MaxDepth` option to limit the depth of the object graph when Chris@0: serializing objects Chris@0: * added support for serializing `SplFileInfo` objects Chris@0: * added support for serializing objects that implement `DateTimeInterface` Chris@0: * added `AbstractObjectNormalizer` as a base class for normalizers that deal Chris@0: with objects Chris@0: * added support to relation deserialization Chris@0: Chris@0: 2.7.0 Chris@0: ----- Chris@0: Chris@0: * added support for serialization and deserialization groups including Chris@0: annotations, XML and YAML mapping. Chris@0: * added `AbstractNormalizer` to factorise code and ease normalizers development Chris@0: * added circular references handling for `PropertyNormalizer` Chris@0: * added support for a context key called `object_to_populate` in `AbstractNormalizer` Chris@0: to reuse existing objects in the deserialization process Chris@0: * added `NameConverterInterface` and `CamelCaseToSnakeCaseNameConverter` Chris@0: * [DEPRECATION] `GetSetMethodNormalizer::setCamelizedAttributes()` and Chris@0: `PropertyNormalizer::setCamelizedAttributes()` are replaced by Chris@0: `CamelCaseToSnakeCaseNameConverter` Chris@0: * [DEPRECATION] the `Exception` interface has been renamed to `ExceptionInterface` Chris@0: * added `ObjectNormalizer` leveraging the `PropertyAccess` component to normalize Chris@0: objects containing both properties and getters / setters / issers / hassers methods. Chris@14: * added `xml_type_cast_attributes` context option for allowing users to opt-out of typecasting Chris@14: xml attributes. Chris@0: Chris@0: 2.6.0 Chris@0: ----- Chris@0: Chris@0: * added a new serializer: `PropertyNormalizer`. Like `GetSetMethodNormalizer`, Chris@0: this normalizer will map an object's properties to an array. Chris@0: * added circular references handling for `GetSetMethodNormalizer` Chris@0: Chris@0: 2.5.0 Chris@0: ----- Chris@0: Chris@0: * added support for `is.*` getters in `GetSetMethodNormalizer` Chris@0: Chris@0: 2.4.0 Chris@0: ----- Chris@0: Chris@0: * added `$context` support for XMLEncoder. Chris@0: * [DEPRECATION] JsonEncode and JsonDecode where modified to throw Chris@0: an exception if error found. No need for get*Error() functions Chris@0: Chris@0: 2.3.0 Chris@0: ----- Chris@0: Chris@0: * added `GetSetMethodNormalizer::setCamelizedAttributes` to allow calling Chris@0: camel cased methods for underscored properties Chris@0: Chris@0: 2.2.0 Chris@0: ----- Chris@0: Chris@0: * [BC BREAK] All Serializer, Normalizer and Encoder interfaces have been Chris@0: modified to include an optional `$context` array parameter. Chris@0: * The XML Root name can now be configured with the `xml_root_name` Chris@0: parameter in the context option to the `XmlEncoder`. Chris@0: * Options to `json_encode` and `json_decode` can be passed through Chris@0: the context options of `JsonEncode` and `JsonDecode` encoder/decoders. Chris@0: Chris@0: 2.1.0 Chris@0: ----- Chris@0: Chris@0: * added DecoderInterface::supportsDecoding(), Chris@0: EncoderInterface::supportsEncoding() Chris@0: * removed NormalizableInterface::denormalize(), Chris@0: NormalizerInterface::denormalize(), Chris@0: NormalizerInterface::supportsDenormalization() Chris@0: * removed normalize() denormalize() encode() decode() supportsSerialization() Chris@0: supportsDeserialization() supportsEncoding() supportsDecoding() Chris@0: getEncoder() from SerializerInterface Chris@0: * Serializer now implements NormalizerInterface, DenormalizerInterface, Chris@0: EncoderInterface, DecoderInterface in addition to SerializerInterface Chris@0: * added DenormalizableInterface and DenormalizerInterface Chris@0: * [BC BREAK] changed `GetSetMethodNormalizer`'s key names from all lowercased Chris@0: to camelCased (e.g. `mypropertyvalue` to `myPropertyValue`) Chris@0: * [BC BREAK] convert the `item` XML tag to an array Chris@0: Chris@0: ``` xml Chris@0: Chris@0: Chris@0: <![CDATA[title1]]><![CDATA[title2]]> Chris@0: Chris@0: ``` Chris@0: Chris@0: Before: Chris@0: Chris@0: Array() Chris@0: Chris@0: After: Chris@0: Chris@0: Array( Chris@0: [item] => Array( Chris@0: [0] => Array( Chris@0: [title] => title1 Chris@0: ) Chris@0: [1] => Array( Chris@0: [title] => title2 Chris@0: ) Chris@0: ) Chris@0: )