Мост PSR-7
Мост PSR-7
Мост PSR-7 конвертирует из объектов HttpFoundation и в объекты, внедряющие интерфейсы HTTP-сообщений, определённые PSR-7.
Установка
Вы можете установить компонент 2 разными способами:
- Установить его через Composer (symfony/psr-http-message-bridge on Packagist);
- Использовать официальное хранилище Git (https://github.com/symfony/psr-http-message-bridge).
Мосту также потребуется внедрение PSR-7, чтобы разрешить конвертацию объектов HttpFoundation в объекты PSR-7. Он предоставляет родную поддержку для Zend Diactoros. Используйте Composer (zendframework/zend-diactoros on Packagist) или обратитесь к документации проекта для установки.
Использование
Конвертация из HttpFoundation Objects в PSR-7
Мост предоставляет интерфейс для фабрики (производства) по имени
HttpMessageFactoryInterface,
которая строит объекты, внедряя интерфейсы PSR-7 из объектов HttpFoundation.
Она также предоставляет внедрение по умолчанию, внутренне используя Zend Diactoros.
Следующий отрезок кода объясняет, как конвертировать Request в Zend Diactoros ServerRequest, внедряя интерфейс ServerRequestInterface:
1 2 3 4 5 6 7 8
use Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory;
use Symfony\Component\HttpFoundation\Request;
$symfonyRequest = new Request(array(), array(), array(), array(), array(), array('HTTP_HOST' => 'dunglas.fr'), 'Content');
// ключ сервера HTTP_HOST должен быть установлен так, чтобы избежать неожиданной ошибки
$psr7Factory = new DiactorosFactory();
$psrRequest = $psr7Factory->createRequest($symfonyRequest);
А теперь от Response к Zend Diactoros Response, внедряя интерфейс ResponseInterface:
1 2 3 4 5 6 7
use Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory;
use Symfony\Component\HttpFoundation\Response;
$symfonyResponse = new Response('Content');
$psr7Factory = new DiactorosFactory();
$psrResponse = $psr7Factory->createResponse($symfonyResponse);
Конвертация объектов, внедряя интерфейсы PSR-7 Interfaces в HttpFoundation
С другой стороны, мост предоставляет фабрике интерфейс под названием HttpFoundationFactoryInterface, который строит объекты HttpFoundation из объектов, внедряющих интерфейсы PSR-7.
Следующий отрезок кода объясняет, как конвертировать объект, внедряющий интерфейс ServerRequestInterface в экземпляр Request:
1 2 3 4 5 6
use Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory;
// $psrRequest - это экземпляр Psr\Http\Message\ServerRequestInterface
$httpFoundationFactory = new HttpFoundationFactory();
$symfonyRequest = $httpFoundationFactory->createRequest($psrRequest);
Из объекта, внедряющего ResponseInterface в экземпляр Response:
1 2 3 4 5 6
use Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory;
// $psrResponse - это экземпляр Psr\Http\Message\ResponseInterface
$httpFoundationFactory = new HttpFoundationFactory();
$symfonyResponse = $httpFoundationFactory->createResponse($psrResponse);