FastForward HTTP Client is a focused integration package that registers a
PSR-18 HTTP client in a FastForward-compatible container. It uses Symfony
HttpClient as the transport layer and exposes
Psr\Http\Client\ClientInterface for application code.
- Registers
Psr\Http\Client\ClientInterfaceasSymfony\Component\HttpClient\Psr18Client - Registers
Symfony\Component\HttpClient\HttpClientthroughHttpClient::create() - Fits naturally into
fast-forward/containerservice-provider based configuration
This package does not register PSR-17 factories on its own. To resolve
Psr\Http\Client\ClientInterface, your container must already provide:
Psr\Http\Message\ResponseFactoryInterfacePsr\Http\Message\StreamFactoryInterface
In a FastForward application, the usual solution is to install
fast-forward/http-factory
or the all-in-one
fast-forward/http metapackage.
Install the package itself:
composer require fast-forward/http-clientChoose one of these setups:
- If your container already provides PSR-17 factories,
fast-forward/http-clientis enough. - If you want explicit FastForward PSR-17 and PSR-18 providers, install
fast-forward/http-client fast-forward/http-factory. - If you want the shortest onboarding path, install
fast-forward/http.
This example uses both fast-forward/http-factory and
fast-forward/http-client so it works in a fresh project:
<?php
declare(strict_types=1);
use FastForward\Http\Client\ServiceProvider\HttpClientServiceProvider;
use FastForward\Http\Message\Factory\ServiceProvider\HttpMessageFactoryServiceProvider;
use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestFactoryInterface;
use function FastForward\Container\container;
$container = container(
new HttpMessageFactoryServiceProvider(),
new HttpClientServiceProvider(),
);
/** @var RequestFactoryInterface $requestFactory */
$requestFactory = $container->get(RequestFactoryInterface::class);
$request = $requestFactory->createRequest('GET', 'https://example.com');
/** @var ClientInterface $client */
$client = $container->get(ClientInterface::class);
$response = $client->sendRequest($request);
$statusCode = $response->getStatusCode();
$body = (string) $response->getBody();| Service ID | Resolved object | Typical use |
|---|---|---|
Psr\Http\Client\ClientInterface |
Symfony\Component\HttpClient\Psr18Client |
Portable PSR-18 application code |
Symfony\Component\HttpClient\HttpClient |
A runtime-selected Symfony\Contracts\HttpClient\HttpClientInterface implementation |
Native Symfony HttpClient features |
The Sphinx documentation in docs/ now covers:
- installation paths for beginners
- the dependency on PSR-17 factories
- direct Symfony client usage versus PSR-18 usage
- override patterns for timeouts, headers, and base URIs
- compatibility notes and FAQ entries for common setup mistakes
This package is open-source software licensed under the MIT License.
Contributions, issues, and pull requests are welcome at php-fast-forward/http-client.