Files
Chamilo/vendor/php-xapi/serializer/UPGRADE.md
2025-08-14 22:41:49 +02:00

52 lines
2.1 KiB
Markdown

UPGRADE
=======
Upgrading from 1.x to 2.0
-------------------------
Raw attachment content data must be passed in order to make it possible for
serializer implementiations to populate the `$content` attribute of `Attachment`
objects during deserialization.
In order to achieve this an optional `$attachments` argument has been added
to the `StatementResultSerializerInterface::deserializeStatementResult()`,
and the `deserializeStatement()` and `deserializeStatements()` methods of
the `StatementSerializerInterface`.
When being passed, this argument must be an array mapping SHA-2 hashes to an
array which in turn maps the `type` and `content` keys to the attachment's
content type and raw content data respectively.
Upgrading from 0.3 to 0.4
-------------------------
* The serializer implementation has been separated from its API definition.
This package now no longer ships with an implementation.
The Symfony Serializer component integration has been moved to the separate
[php-xapi/symfony-serializer package](https://github.com/php-xapi/symfony-serializer).
A default implementation of the `SerializerRegistryInterface` is still part
of the `php-xapi/serializer` package though.
This package ships with the following interfaces that must be implemented
by packages that want to provide the xAPI serialization functionality:
* `ActorSerializerInterface`
* `DocumentDataSerializerInterface`
* `StatementResultSerializerInterface`
* `StatementSerializerInterface`
* `StatementFactoryInterface`
Implementors of the API provided by this package are advised to add the
`php-xapi/serializer-implementation` package to the `provide` section of
their `composer.json` file.
The `Tests` subnamespace of this package contains a set of base abstract
PHPUnit test classes integrators can use to make sure that their implementation
adheres to the API specified by the `php-xapi/serializer` package.
* The `SerializerRegistry` class is now final. If you need custom behavior
inside the serializer registry, create your own implementation of the
`SerializerRegistryInterface`.