Slide 57
Slide 57 text
$kernel = new AppKernel('prod', false);
$reactHttp->on('request', function ($request, $response) use ($kernel) {
$headers = $request->getHeaders();
if (in_array(strtoupper($request->getMethod()), ['POST','PUT','DELETE','PATCH'])
&& isset($headers['Content-Type'])
&& (0 === strpos($headers['Content-Type'], 'application/x-www-form-urlencoded'))
)
parse_str($request->getBody(), $post);
$sfRequest = new Symfony\Component\HttpFoundation\Request(
$request->getQuery(), // query string
$post ?? [], // parsed POST payload
array(), // attributes (PATH_INFO etc)
array(), // $_COOKIES
$request->getFiles(), // $_FILES
array(), // $_SERVER
$request->getBody() // raw request body
);
$sfRequest->setMethod($request->getMethod());
$sfRequest->headers->replace($headers);
$sfRequest->server->set('REQUEST_URI', $request->getPath());
if (isset($headers['Host']))
$sfRequest->server->set('SERVER_NAME', explode(':', $headers['Host'])[0]);
$sfResponse = $kernel->handle($sfRequest);
$response->writeHead($sfResponse->getStatusCode(), $sfResponse->headers->all());
$response->end($sfResponse->getContent());
$kernel->terminate($request, $response);
});