Skip to content

Latest commit

 

History

History
394 lines (289 loc) · 23.2 KB

CHANGELOG.md

File metadata and controls

394 lines (289 loc) · 23.2 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

Added

  • Add support for PHP 8.4

Changed

  • Dropped support for PHP 7.4 and PHP 8.0

Deprecated

  • \Art4\Accessable::get() will add mixed as a native return type declaration in 2.0.0, do the same in your implementation now to avoid errors.
  • \Art4\Manager::getParam() will add mixed as a native return type declaration in 2.0.0, do the same in your implementation now to avoid errors.

Added

  • Add support for PHP 8.2 and PHP 8.3

Deprecated

  • Providing Argument #1 ($key) in \Art4\JsonApiClient\Accessable::has() not as int|string is deprecated and will throw an Exception in 2.0.0.
  • Providing Argument #1 ($key) in \Art4\JsonApiClient\Accessable::get() not as int|string is deprecated and will throw an Exception in 2.0.0.

Added

  • Added type hints for parameters and return types in internal and final classes
  • New tests for improving backward compatibility in interfaces
  • Add support for PHP 8.1

Changed

  • Switched from Travis-CI to Github Actions

Deprecated

  • \Art4\JsonApiClient\Accessable::has() will add bool as a native return type declaration in 2.0.0, do the same in your implementation now to avoid errors.
  • \Art4\JsonApiClient\Accessable::getKeys() will add array as a native return type declaration in 2.0.0, do the same in your implementation now to avoid errors.
  • \Art4\JsonApiClient\Exception\Exception will extend \Throwable in 2.0.0, do the same in your implementation now to avoid errors.
  • \Art4\JsonApiClient\Factory::make() methods first parameter signature will be string in 2.0.0.
  • \Art4\JsonApiClient\Factory::make() will add \Art4\JsonApiClient\Accessable as a native return type declaration in 2.0.0, do the same in your implementation now to avoid errors.
  • \Art4\JsonApiClient\Input\Input::getAsObject() will add \stdClass as a native return type declaration in 2.0.0, do the same in your implementation now to avoid errors.
  • \Art4\JsonApiClient\Manager::parse() will add \Art4\JsonApiClient\Accessable as a native return type declaration in 2.0.0, do the same in your implementation now to avoid errors.
  • \Art4\JsonApiClient\Manager::getFactory() will add \Art4\JsonApiClient\Factory as a native return type declaration in 2.0.0, do the same in your implementation now to avoid errors.
  • \Art4\JsonApiClient\Manager::getParam() methods first parameter signature will be string in 2.0.0.
  • \Art4\JsonApiClient\Serializer\Serializer::serialize() will add ?array as a native return type declaration in 2.0.0, do the same in your implementation now to avoid errors.

Added

  • Support for PHP 8.0 added

Changed

  • Support for PHP 5.6, 7.0, 7.1, 7.2 and 7.3 dropped, PHP 7.4 is now required
  • BREAKING: Providing the fields type or id in a resource not as a string throws a \Art4\JsonApiClient\Exception\ValidationException, provide them always as strings instead

Removed

  • BREAKING: Art4\JsonApiClient\AccessInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\Attributes removed, use Art4\JsonApiClient\V1\Attributes instead
  • BREAKING: Art4\JsonApiClient\AttributesInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\Document removed, use Art4\JsonApiClient\V1\Document instead
  • BREAKING: Art4\JsonApiClient\DocumentInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\DocumentLink removed, use Art4\JsonApiClient\V1\DocumentLink instead
  • BREAKING: Art4\JsonApiClient\DocumentLinkInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\ElementInterface removed, use Art4\JsonApiClient\Element instead
  • BREAKING: Art4\JsonApiClient\Error removed, use Art4\JsonApiClient\V1\Error instead
  • BREAKING: Art4\JsonApiClient\ErrorCollection removed, use Art4\JsonApiClient\V1\ErrorCollection instead
  • BREAKING: Art4\JsonApiClient\ErrorCollectionInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\ErrorInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\ErrorLink removed, use Art4\JsonApiClient\V1\ErrorLink instead
  • BREAKING: Art4\JsonApiClient\ErrorLinkInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\ErrorSource removed, use Art4\JsonApiClient\V1\ErrorSource instead
  • BREAKING: Art4\JsonApiClient\ErrorSourceInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\Jsonapi removed, use Art4\JsonApiClient\V1\Jsonapi instead
  • BREAKING: Art4\JsonApiClient\JsonapiInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\Link removed, use Art4\JsonApiClient\V1\Link instead
  • BREAKING: Art4\JsonApiClient\LinkInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\Meta removed, use Art4\JsonApiClient\V1\Meta instead
  • BREAKING: Art4\JsonApiClient\MetaInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\Relationship removed, use Art4\JsonApiClient\V1\Relationship instead
  • BREAKING: Art4\JsonApiClient\RelationshipCollection removed, use Art4\JsonApiClient\V1\RelationshipCollection instead
  • BREAKING: Art4\JsonApiClient\RelationshipCollectionInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\RelationshipInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\RelationshipLink removed, use Art4\JsonApiClient\V1\RelationshipLink instead
  • BREAKING: Art4\JsonApiClient\RelationshipLinkInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\ResourceCollection removed, use Art4\JsonApiClient\V1\ResourceCollection instead
  • BREAKING: Art4\JsonApiClient\ResourceCollectionInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\ResourceIdentifier removed, use Art4\JsonApiClient\V1\ResourceIdentifier instead
  • BREAKING: Art4\JsonApiClient\ResourceIdentifierCollection removed, use Art4\JsonApiClient\V1\ResourceIdentifierCollection instead
  • BREAKING: Art4\JsonApiClient\ResourceIdentifierCollectionInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\ResourceIdentifierInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\ResourceItem removed, use Art4\JsonApiClient\V1\ResourceItem instead
  • BREAKING: Art4\JsonApiClient\ResourceItemInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\ResourceItemLink removed, use Art4\JsonApiClient\V1\ResourceItemLink instead
  • BREAKING: Art4\JsonApiClient\ResourceItemLinkInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\ResourceNull removed, use Art4\JsonApiClient\V1\ResourceNull instead
  • BREAKING: Art4\JsonApiClient\ResourceNullInterface removed, use Art4\JsonApiClient\Accessable instead
  • BREAKING: Art4\JsonApiClient\Utils\AccessKey removed
  • BREAKING: Art4\JsonApiClient\Utils\AccessTrait removed
  • BREAKING: Art4\JsonApiClient\Utils\DataContainer removed
  • BREAKING: Art4\JsonApiClient\Utils\DataContainerInterface removed
  • BREAKING: Art4\JsonApiClient\Utils\Factory removed, use Art4\JsonApiClient\V1\Factory instead
  • BREAKING: Art4\JsonApiClient\Utils\FactoryInterface removed, use Art4\JsonApiClient\Factory instead
  • BREAKING: Art4\JsonApiClient\Utils\FactoryManagerInterface removed
  • BREAKING: Art4\JsonApiClient\Utils\Helper::decodeJson() removed, use Art4\JsonApiClient\Input\ResponseStringInput::getAsObject() instead
  • BREAKING: Art4\JsonApiClient\Utils\Helper removed, use Art4\JsonApiClient\Helper\Parser instead
  • BREAKING: Art4\JsonApiClient\Utils\Manager removed, use Art4\JsonApiClient\Manager\ErrorAbortManager instead
  • BREAKING: Art4\JsonApiClient\Utils\ManagerInterface removed, use Art4\JsonApiClient\Manager instead

Fixed

  • Relationship links can be an object

Deprecated

  • Providing the fields type or id in a resource not as a string will be throw a ValidationException in v1.0, provide them always as strings instead

Added

  • Support for PHP 7.3 added
  • New class Art4\JsonApiClient\Helper\Parser to parse or validate a JSON API string
  • New class Art4\JsonApiClient\Manager\ErrorAbortManager to parse a JSON API input
  • New class Art4\JsonApiClient\Serializer\ArraySerializer to create an array from an Art4\JsonApiClient\Accessable
  • New class Art4\JsonApiClient\V1\Attributes to represent an Attributes element
  • New class Art4\JsonApiClient\V1\Document to represent a Document element
  • New class Art4\JsonApiClient\V1\DocumentLink to represent a DocumentLink element
  • New class Art4\JsonApiClient\V1\Error to represent an Error element
  • New class Art4\JsonApiClient\V1\ErrorCollection to represent an ErrorCollection element
  • New class Art4\JsonApiClient\V1\ErrorLink to represent an ErrorLink element
  • New class Art4\JsonApiClient\V1\ErrorSource to represent an ErrorSource element
  • New class Art4\JsonApiClient\V1\Jsonapi to represent a Jsonapi element
  • New class Art4\JsonApiClient\V1\Link to represent a Link element
  • New class Art4\JsonApiClient\V1\Meta to represent a Meta element
  • New class Art4\JsonApiClient\V1\Relationship to represent a Relationship element
  • New class Art4\JsonApiClient\V1\RelationshipCollection to represent a RelationshipCollection element
  • New class Art4\JsonApiClient\V1\RelationshipLink to represent a RelationshipLink element
  • New class Art4\JsonApiClient\V1\ResourceCollection to represent a ResourceCollection element
  • New class Art4\JsonApiClient\V1\ResourceIdentifier to represent a ResourceIdentifier element
  • New class Art4\JsonApiClient\V1\ResourceIdentifierCollection to represent a ResourceIdentifierCollection element
  • New class Art4\JsonApiClient\V1\ResourceItem to represent a ResourceItem element
  • New class Art4\JsonApiClient\V1\ResourceItemLink to represent a ResourceItemLink element
  • New class Art4\JsonApiClient\V1\ResourceNull to represent a ResourceNull element

Changed

  • Support for PHP 5.5 dropped, PHP >=5.6 is now required

Deprecated

  • Art4\JsonApiClient\AccessInterface::asArray() will be removed in v1.0, use Art4\JsonApiClient\Serializer\ArraySerializer::serialize() instead
  • Art4\JsonApiClient\AccessInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\Attributes will be removed in v1.0, use Art4\JsonApiClient\V1\Attributes instead
  • Art4\JsonApiClient\AttributesInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\Document will be removed in v1.0, use Art4\JsonApiClient\V1\Document instead
  • Art4\JsonApiClient\DocumentInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\DocumentLink will be removed in v1.0, use Art4\JsonApiClient\V1\DocumentLink instead
  • Art4\JsonApiClient\DocumentLinkInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\ElementInterface will be removed in v1.0, use Art4\JsonApiClient\Element instead
  • Art4\JsonApiClient\Error will be removed in v1.0, use Art4\JsonApiClient\V1\Error instead
  • Art4\JsonApiClient\ErrorCollection will be removed in v1.0, use Art4\JsonApiClient\V1\ErrorCollection instead
  • Art4\JsonApiClient\ErrorCollectionInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\ErrorInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\ErrorLink will be removed in v1.0, use Art4\JsonApiClient\V1\ErrorLink instead
  • Art4\JsonApiClient\ErrorLinkInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\ErrorSource will be removed in v1.0, use Art4\JsonApiClient\V1\ErrorSource instead
  • Art4\JsonApiClient\ErrorSourceInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\Jsonapi will be removed in v1.0, use Art4\JsonApiClient\V1\Jsonapi instead
  • Art4\JsonApiClient\JsonapiInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\Link will be removed in v1.0, use Art4\JsonApiClient\V1\Link instead
  • Art4\JsonApiClient\LinkInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\Meta will be removed in v1.0, use Art4\JsonApiClient\V1\Meta instead
  • Art4\JsonApiClient\MetaInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\Relationship will be removed in v1.0, use Art4\JsonApiClient\V1\Relationship instead
  • Art4\JsonApiClient\RelationshipCollection will be removed in v1.0, use Art4\JsonApiClient\V1\RelationshipCollection instead
  • Art4\JsonApiClient\RelationshipCollectionInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\RelationshipInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\RelationshipLink will be removed in v1.0, use Art4\JsonApiClient\V1\RelationshipLink instead
  • Art4\JsonApiClient\RelationshipLinkInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\ResourceCollection will be removed in v1.0, use Art4\JsonApiClient\V1\ResourceCollection instead
  • Art4\JsonApiClient\ResourceCollectionInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\ResourceIdentifier will be removed in v1.0, use Art4\JsonApiClient\V1\ResourceIdentifier instead
  • Art4\JsonApiClient\ResourceIdentifierCollection will be removed in v1.0, use Art4\JsonApiClient\V1\ResourceIdentifierCollection instead
  • Art4\JsonApiClient\ResourceIdentifierCollectionInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\ResourceIdentifierInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\ResourceItem will be removed in v1.0, use Art4\JsonApiClient\V1\ResourceItem instead
  • Art4\JsonApiClient\ResourceItemInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\ResourceItemLink will be removed in v1.0, use Art4\JsonApiClient\V1\ResourceItemLink instead
  • Art4\JsonApiClient\ResourceItemLinkInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\ResourceNull will be removed in v1.0, use Art4\JsonApiClient\V1\ResourceNull instead
  • Art4\JsonApiClient\ResourceNullInterface will be removed in v1.0, use Art4\JsonApiClient\Accessable instead
  • Art4\JsonApiClient\Utils\AccessKey will be removed in v1.0
  • Art4\JsonApiClient\Utils\AccessTrait will be removed in v1.0
  • Art4\JsonApiClient\Utils\DataContainer will be removed in v1.0
  • Art4\JsonApiClient\Utils\DataContainerInterface will be removed in v1.0
  • Art4\JsonApiClient\Utils\Factory will be removed in v1.0, use Art4\JsonApiClient\V1\Factory instead
  • Art4\JsonApiClient\Utils\FactoryInterface will be removed in v1.0, use Art4\JsonApiClient\Factory instead
  • Art4\JsonApiClient\Utils\FactoryManagerInterface will be removed in v1.0
  • Art4\JsonApiClient\Utils\Helper::decodeJson() will be removed in v1.0, use Art4\JsonApiClient\Input\ResponseStringInput::getAsObject() instead
  • Art4\JsonApiClient\Utils\Helper will be removed in v1.0, use Art4\JsonApiClient\Helper\Parser instead
  • Art4\JsonApiClient\Utils\Manager will be removed in v1.0, use Art4\JsonApiClient\Manager\ErrorAbortManager instead
  • Art4\JsonApiClient\Utils\ManagerInterface will be removed in v1.0, use Art4\JsonApiClient\Manager instead

0.9.1 - 2017-12-21

Changed

  • Change Code Style to PSR-2
  • Tests in Travis for PHP 7.2 and nightly added

0.9 - 2017-06-06

Added

  • New method Utils\Helper::parseResponseBody() to parse a JSON API response body
  • New method Utils\Helper::isValidResponseBody() to validate a JSON API response body
  • New method Utils\Helper::isValidRequestBody() to validate a JSON API request body with optional item id

Deprecated

  • Utils\Helper::parse() will be removed in v1.0, use Utils\Helper::parseResponseBody() instead
  • Utils\Helper::isValid() will be removed in v1.0, use Utils\Helper::isValidResponseBody() instead

0.8.1 - 2017-06-01

Fixed

  • Fixed a bug in the decission if a data attribute is a ResourceItem or ResourceIdentifier

0.8 - 2017-05-29

Added

  • New method Utils\Helper::parseRequestBody() to parse JSON API with optional item id
  • Run tests with Travis in PHP 7.1

Changed

  • Drop support for PHP 5.4
  • BREAKING: New method Utils\ManagerInterface::getConfig() to get a config value
  • BREAKING: New method Utils\ManagerInterface::setConfig() to set a config value

0.7 - 2016-11-24

Changed

  • Update license to GPLv3
  • BREAKING: Introducing the ElementInterface to seperate the parsing from the constructor
  • BREAKING: Rename Art4\JsonApiClient\Resource\Collection to Art4\JsonApiClient\ResourceCollection
  • BREAKING: Rename Art4\JsonApiClient\Resource\CollectionInterface to Art4\JsonApiClient\ResourceCollectionInterface
  • BREAKING: Rename Art4\JsonApiClient\Resource\Identifier to Art4\JsonApiClient\ResourceIdentifier
  • BREAKING: Rename Art4\JsonApiClient\Resource\IdentifierInterface to Art4\JsonApiClient\ResourceIdentifierInterface
  • BREAKING: Rename Art4\JsonApiClient\Resource\IdentifierCollection to Art4\JsonApiClient\ResourceIdentifierCollection
  • BREAKING: Rename Art4\JsonApiClient\Resource\IdentifierCollectionInterface to Art4\JsonApiClient\ResourceIdentifierCollectionInterface
  • BREAKING: Rename Art4\JsonApiClient\Resource\Item to Art4\JsonApiClient\ResourceItem
  • BREAKING: Rename Art4\JsonApiClient\Resource\ItemInterface to Art4\JsonApiClient\ResourceItemInterface
  • BREAKING: Rename Art4\JsonApiClient\Resource\ItemLink to Art4\JsonApiClient\ResourceItemLink
  • BREAKING: Rename Art4\JsonApiClient\Resource\ItemLinkInterface to Art4\JsonApiClient\ResourceItemLinkInterface
  • BREAKING: Rename Art4\JsonApiClient\Resource\NullResource to Art4\JsonApiClient\ResourceNull
  • BREAKING: Rename Art4\JsonApiClient\Resource\NullResourceInterface to Art4\JsonApiClient\ResourceNullInterface

Removed

  • BREAKING: Remove the Resource\ResourceInterface and its methods

0.6.3 - 2016-04-26

Fixed

  • Prevent PHP bug in json_decode(), if option JSON_BIGINT_AS_STRING is not implemented, see #28

0.6.2 - 2016-04-15

Fixed

  • links in document object can contain objects, see #26

0.6.1 - 2015-12-28

Added

  • New Resource\ItemLink object; was seperated from Link object

Fixed

  • links and pagination are now parsed spec conform, see #23

0.6 - 2015-11-06

Added

  • Helper::isValid() checks if a string is valid JSON API

Fixed

  • BREAKING: pagination links moved from Pagination to DocumentLink and RelationshipLink

Removed

  • BREAKING: object Pagination was removed

0.5 - 2015-10-12

Added

  • Dot-notation support in AccessInterface::has() and AccessInterface::get()
  • Every object has now his own interface, eg. DocumentInterface, MetaInterface or Resource\ItemInterface

Changed

  • BREAKING: object PaginationLink was renamed to Pagination
  • BREAKING: nearly all classes was set to final and can't be extended anymore. Implement the new interfaces instead. See also #18.

0.4 - 2015-09-01

Added

  • Introduce Utils\Manager and Utils\Factory for injecting own classes into the client
  • Every object inside the document implements AccessInterface
  • AccessInterface supports asArray() for transforming an object into an array
  • A Resource\IdentifierCollection that is either empty or holds only Resource\Identifier objects

Fixed

  • Relationship::get('data') returns a Resource\IdentifierCollection object instead of an array

0.3 - 2015-08-24

Added

  • Better documentation

Changed

  • Document::get('data') returns always a ResourceInterface object
  • Document::get('error') returns a ErrorCollection object
  • Document::get('included') returns a Resource\Collection object
  • \Art4\JsonApiClient\Exception\ValidationException will be thrown instead of InvalidArgumentException
  • \Art4\JsonApiClient\Exception\AccessException will be thrown instead of RuntimeException

0.2 - 2015-08-12

Added

  • Documentation, see folder docs/
  • Every object has got a get() and has() method for better value access
  • Every object can list his own keys with keyKeys()

Removed

  • All old getter like getMeta() or hasId() were removed

0.1 - 2015-08-11

Added

  • Validator fits nearly 100% specification
  • Full test coverage