The PSR-17 specification defines interfaces for HTTP factories. These factories are used to create PSR-7 objects.
The following example shows how to create configuration for the HTTP factories, using the httpsoft/http-message package:
<?php
declare(strict_types=1);
use HttpSoft\Message\RequestFactory;
use HttpSoft\Message\ResponseFactory;
use HttpSoft\Message\ServerRequestFactory;
use HttpSoft\Message\StreamFactory;
use HttpSoft\Message\UploadedFileFactory;
use HttpSoft\Message\UriFactory;
use Psr\Http\Message\RequestFactoryInterface;
use Psr\Http\Message\ResponseFactoryInterface;
use Psr\Http\Message\ServerRequestFactoryInterface;
use Psr\Http\Message\StreamFactoryInterface;
use Psr\Http\Message\UploadedFileFactoryInterface;
use Psr\Http\Message\UriFactoryInterface;
return [
RequestFactoryInterface::class => RequestFactory::class,
ServerRequestFactoryInterface::class => ServerRequestFactory::class,
ResponseFactoryInterface::class => ResponseFactory::class,
StreamFactoryInterface::class => StreamFactory::class,
UriFactoryInterface::class => UriFactory::class,
UploadedFileFactoryInterface::class => UploadedFileFactory::class,
];
The following example shows how to create configuration for the HTTP factories, using the nyholm/psr7 package:
<?php
declare(strict_types=1);
use Nyholm\Psr7\Factory\Psr17Factory;
use Psr\Http\Message\RequestFactoryInterface;
use Psr\Http\Message\ResponseFactoryInterface;
use Psr\Http\Message\ServerRequestFactoryInterface;
use Psr\Http\Message\StreamFactoryInterface;
use Psr\Http\Message\UploadedFileFactoryInterface;
use Psr\Http\Message\UriFactoryInterface;
return [
RequestFactoryInterface::class => Psr17Factory::class,
ServerRequestFactoryInterface::class => Psr17Factory::class,
ResponseFactoryInterface::class => Psr17Factory::class,
StreamFactoryInterface::class => Psr17Factory::class,
UriFactoryInterface::class => Psr17Factory::class,
UploadedFileFactoryInterface::class => Psr17Factory::class,
];
Both packages provide the same interfaces, so you can use any of them.