swisnl / json-api-client

A PHP package for mapping remote {json:api} resources to Eloquent like models and collections.
MIT License
205 stars 24 forks source link

Use PSR-18 (and PSR-17) interfaces instead of PHP-HTTP #60

Closed JaZo closed 5 years ago

JaZo commented 5 years ago

Description

I updated the client so it requires a PSR-18 HTTP client instead of a PHP-HTTP client. As this is a breaking change, I took the liberty to also change the way our client is bound in the service provider. The client now discovers HTTP clients itself. A custom HTTP client must now be registered by customizing the container binding.

Motivation and context

PSR-18 has been released for a while and most PHP-HTTP implementations now also implement PSR-18. Both changes should also make the usage without Laravel easier.

I also implemented PSR-17 HTTP factories as the currently used factory in combination with the discovery is deprecated. Currently just a few libraries implement these interfaces, so I required nyholm/psr7 for now. Once most HTTP clients implement these interfaces (Guzzle for example is working on it), we can drop it as a dependency and leave it to the consumer to choose an implementation.

How has this been tested?

Tested with existing/updated unit tests.

Types of changes

What types of changes does your code introduce? Put an x in all the boxes that apply:

Checklist:

Go over all the following points, and put an x in all the boxes that apply.