Clients & Adapters
There are two types of libraries you can use to send HTTP messages; clients and adapters. A client implements the
HttpClient
and/or the HttpAsyncClient
interfaces directly. A client adapter is a class implementing the
interface and forwarding the calls to an HTTP client not implementing the interface. (See Adapter pattern on Wikipedia).
Hint
Modern PHP clients implement the PSR-18 HTTP Client
standard. If you want to do synchronous requests, you don’t
need a PHP-HTTP adapter anymore. We keep providing the the curl client and a mock client for testing.
The adapters are still useful if you need the PHP-HTTP HttpAsyncClient
.
Note
All clients and adapters comply with Liskov substitution principle which means that you can easily change one for another without any side effects.
Current Clients and Adapters
Name |
Type |
Links |
Stats |
---|---|---|---|
|
Client |
||
|
Client |
||
|
Client |
||
|
Adapter |
||
|
Adapter |
||
|
Adapter |
Legacy Clients and Adapters
These are not maintained anymore, but we keep documentation around for now. Please upgrade your applications to use a maintained client or adapter.
Name |
Type |
Links |
Stats |
---|---|---|---|
|
Client |
||
|
Adapter |
||
|
Adapter |
||
|
Adapter |
||
|
Adapter |
||
|
Adapter |
Composer Virtual Packages
Virtual packages are a way to specify the dependency on an implementation of an interface-only repository without forcing a specific implementation. For HTTPlug, the virtual packages are called php-http/client-implementation (though you should be using psr/http-client-implementation to use PSR-18) and php-http/async-client-implementation.
There is no library registered with those names. However, all client implementations (including client adapters) for
HTTPlug use the provide
section to tell composer that they do provide the client-implementation.