Files
Chamilo/vendor/php-xapi/client/UPGRADE.md
2025-04-10 12:24:57 +02:00

111 lines
4.1 KiB
Markdown

UPGRADE
=======
Upgrading from 0.4 to 0.5
-------------------------
* **CAUTION**: This release drops support for PHP 5.3 due to the introduced
dependency on `php-http/httplug` (see below).
* The client now depends on the [HTTPlug library](http://httplug.io/) to
perform HTTP requests. This means that the package now depends the virtual
`php-http/client-implementation`. To satisfy this dependency you have to
pick [an implementation](https://packagist.org/providers/php-http/client-implementation)
and install it together with `php-xapi/client`.
For example, if you prefer to use [Guzzle 6](http://docs.guzzlephp.org/en/latest/)
you would do the following:
```bash
$ composer require --no-update php-http/guzzle6-adapter
$ composer require php-xapi/client
```
* The `setHttpClient()` and `setRequestFactory()` method have been added
to the `XApiClientBuilderInterface` and must be used to configure the
`HttpClient` and `RequestFactory` instances you intend to use.
To use [Guzzle 6](http://docs.guzzlephp.org/en/latest/), for example,
this will look like this:
```php
use Http\Adapter\Guzzle6\Client;
use Http\Message\MessageFactory\GuzzleMessageFactory;
use Xabbuh\XApi\Client\XApiClientBuilder;
$builder = new XApiClientBuilder();
$client = $builder->setHttpClient(new Client())
->setRequestFactory(new GuzzleMessageFactory())
->setBaseUrl('http://example.com/xapi/')
->build();
```
You can avoid calling `setHttpClient()` and `setRequestFactory` by installing
the [HTTP discovery](http://php-http.org/en/latest/discovery.html) package.
* The `xabbuh/oauth1-authentication` package now must be installed if you want
to use OAuth1 authentication.
* A second optional `$attachments` argument (defaulting to `true`) has been added
to the `getStatement()`, `getVoidedStatement()`, and `getStatements()` methods
of the `StatementsApiClient` class and the `StatementsApiClientInterface`.
* An optional fifth `$headers` parameter has been added to the `createRequest()`
method of the `HandlerInterface` and the `Handler` class which allows to pass
custom headers when performing HTTP requests.
Upgrading from 0.2 to 0.3
-------------------------
* Removed the `ApiClient` class. The `$requestHandler` and `$version` attributes
have been moved to the former child classes of the `ApiClient` class and
their visibility has been changed to `private`.
* The visibility of the `$documentDataSerializer` property of the `ActivityProfileApiClient`,
`AgentProfileApiClient`, `DocumentApiClient`, and `StateApiClient` classes
has been changed to `private`.
* Removed the `getRequestHandler()` method from the API classes:
* `ActivityProfileApiClient::getRequestHandler()`
* `AgentProfileApiClient::getRequestHandler()`
* `ApiClient::getRequestHandler()`
* `DocumentApiClient::getRequestHandler()`
* `StateApiClient::getRequestHandler()`
* `StatementsApiClient::getRequestHandler()`
* `XApiClient::getRequestHandler()`
* Removed the `getVersion()` method from the API interfaces:
* `ActivityProfileApiClientInterface::getVersion()`
* `AgentProfileApiClientInterface::getVersion()`
* `StateApiClientInterface::getVersion()`
* `StatementsApiClientInterface::getVersion()`
* Removed the `getVersion()` method from the API classes:
* `ActivityProfileApiClient::getVersion()`
* `AgentProfileApiClient::getVersion()`
* `ApiClient::getVersion()`
* `DocumentApiClient::getVersion()`
* `StateApiClient::getVersion()`
* `StatementsApiClient::getVersion()`
* `XApiClient::getVersion()`
* Removed the `getUsername()` and `getPassword()` methods from the `HandlerInterface`
and the `Handler` class.
* Removed the `getHttpClient()` method from the `Handler` class.
* Removed the `getSerializerRegistry()` method from the `XApiClient` class.
* All classes are final now which means that you can now longer extend them.
Consider using composition/decoration instead if you need to build functionality
on top of the built-in classes.
Upgrading from 0.1 to 0.2
-------------------------
* Statement identifiers must be passed as `StatementId` objects instead of
strings.