diff --git a/UPGRADING.md b/UPGRADING.md index 09ce6c8..bbadabf 100644 --- a/UPGRADING.md +++ b/UPGRADING.md @@ -1,3 +1,55 @@ +From 2.2.3 to 2.3.0 +==================== + +- The `\Serializable` PHP interface is deprecated, the methods of this interface will be removed in 3.0. + This change is done to allow the use of the new `__serialize` and `__unserialize` PHP's strategy. + + If you were extending the metadata classes, your custom serialization methods were looking probably as something as this: + + ```php + class MyMetadata extends PropertyMetadata + { + // ... more code + + public function serialize() + { + $data = parent::serialize(); + + return \serialize([$data, $this->customMetadataProp]); + } + + public function unserialize($str) + { + list($str, $this->customMetadataProp) = \unserialize($str); + + parent::unserialize($str); + } + } + ``` + + After this change, your code should look like this: + + ```php + class MyMetadata extends PropertyMetadata + { + // ... more code + + protected function serializeToArray(): array + { + $data = parent::serializeToArray(); + + return [$data, $this->customMetadataProp]; + } + + protected function unserializeFromArray(array $data): void + { + list($data, $this->customMetadataProp) = $data; + + parent::unserializeFromArray($data); + } + } + ``` + From 1.7.0 to 2.0.0 ====================