public static function buildResponseFromHeader(array $headers) { $line = array_shift($headers); if (!empty($line)) { $parts = explode(' ', trim($line), 3); if (isset($parts[0]) && isset($parts[1]) && isset($parts[2])) { $scheme = strval($parts[0]); $code = intval($parts[1]); $message = strval($parts[2]); $response = new Response(); $response->setProtocolVersion($scheme); $response->setStatus($code, $message); // append header foreach ($headers as $line) { $parts = explode(':', $line, 2); if (isset($parts[0]) && isset($parts[1])) { $key = $parts[0]; $value = trim($parts[1]); $response->addHeader($key, $value); } } return $response; } else { throw new ParseException('Invalid status line format'); } } else { throw new ParseException('Couldnt find status line'); } }