1. Go to this page and download the library: Download brnc/psr7-symfony1-adapter library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use brnc\Symfony1\Message\Adapter\Request;
$serverRequestAdapter = Request::fromSfWebRequest(
$sfWebRequest,
[
// If set to true a stream on php://input is used instead of creating one over sfWebRequest::getContent() → defaults to false
Request::OPTION_BODY_USE_STREAM => false,
// sfWebRequest-compatibility mode – set to false if you need PSR-7's immutability
Request::OPTION_IMMUTABLE_VIOLATION => true,
]
);
use brnc\Symfony1\Message\Adapter\Response;
$responseAdapter = Response::fromSfWebResponse(
$sfWebResponse,
[Response::OPTION_IMMUTABLE_VIOLATION => false]
);
$newInstance = $responseAdapter->withBody(
\GuzzleHttp\Psr7\Utils::streamFor(
'<html><head><title>Hello World!</title></head><body><h1>PSR-7 Adapters!</h1></body></html>'
)
);
$newestInstance = $newInstance->withBody(
\GuzzleHttp\Psr7\Utils::streamFor(
'<html><head><body><h1>dead end</h1></body></html>'
)
);
// selects the content of $newInstance to be send instead of the most recent instance's one (i.e. $newestInstance)
$newInstance->preSend();
// N.b. The stream of $newestInstance is still held in memory until $responseAdapter and all copies got destroyed!
// This might change in the future when this will be refactored to use WeakMap.
$sfWebResponse->send();
$request = \brnc\Symfony1\Message\Adapter\Request::fromSfWebRequest($sfWebRequest);
$responseFactory = new \brnc\Symfony1\Message\Factory\ResponseFactory($sfWebResponse);
// (dependency) inject the ResponseFactory to your dispatcher, middlewares, and handlers
$entryPoint = new YourPSR15Dispatcher($responseFactory);
// Dispatch your sub-stack via PSR-15
$response = $entryPoint->handler($response);
// As $response will be linked to $sfWebResponse you don't need to do anything
// if you are in the context of a Symfony1 action. Only call $response->getSfWebResponse() in dire need!
// Given arbitrary PSR-7 response…
$psr7response = $psr7responseFactory();
// …use the ResponseTranscriptor in order to–
$transcriptor = new \brnc\Symfony1\Message\Transcriptor\ResponseTranscriptor();
// copy the response's contents.
// The returned object will be the same as in the argument!
$sfWebResponse = $transcriptor->transcribe($psr7response, $sfWebResponse);
// Use this chain to create a http-foundation request from a Symfony1's \sfWebRequest
$psrRequest = \brnc\Symfony1\Message\Adapter\Request::fromSfWebRequest($sfWebRequest);
$httpFoundationFactory = \Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory();
$symfonyRequest = $httpFoundationFactory->createRequest($psrRequest);
// Handle the request with some present day Symfony component
$symfonyResponse = $httpKernel->handle($symfonyRequest);
// Possibly ResponseFactory is best created in the Symfony1 context
$responseFactory = new \brnc\Symfony1\Message\Factory\ResponseFactory($sfWebResponse);
// Obtain other PSR17 factories,
// while only ResponseFactory & StreamFactory will be used (as of today)
$streamFactory = \brnc\Symfony1\Message\Factory\GuzzleStreamFactory();
$decoyFactory = \brnc\Symfony1\Message\Factory\DecoyHttpFactory();
// Construct the PsrHttpFactory from symfony/psr-http-message-bridge and translate…
$psrHttpFactory = Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory(
$decoyFactory, $streamFactory, $decoyFactory, $responseFactory
);
$psrResponse = $psrHttpFactory->createResponse($symfonyResponse);
// As $psrResponse will be linked to $sfWebResponse as it was created through the
// ResponseFactory you don't need to do anything if you exit via an Symfony1 action.
// Only call $psrResponse->getSfWebResponse() in dire need!
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.