diff --git a/docs/source/dependency-injection.rst b/docs/source/dependency-injection.rst index 25bc0ab..86c7e97 100644 --- a/docs/source/dependency-injection.rst +++ b/docs/source/dependency-injection.rst @@ -14,7 +14,7 @@ Imaging we have a ``FooHandler`` that depends on a ``BarInterface``, and ``BazIn private $bar; private $baz; - public function __construct(BarInterface $bar, BazInterface $bar) + public function __construct(BarInterface $bar, BazInterface $baz) { $this->bar = $bar; $this->baz = $baz; diff --git a/src/Message/ServerRequest.php b/src/Message/ServerRequest.php index c953b7e..ed9068d 100644 --- a/src/Message/ServerRequest.php +++ b/src/Message/ServerRequest.php @@ -479,25 +479,28 @@ class ServerRequest extends Request implements ServerRequestInterface */ protected function getServerRequestHeaders() { - if (!function_exists('apache_get_version')) { - // http://www.php.net/manual/en/function.getallheaders.php#84262 - $headers = array(); - foreach ($_SERVER as $name => $value) { - if (substr($name, 0, 5) === "HTTP_") { - $headers[str_replace(" ", "-", ucwords(strtolower(str_replace("_", " ", substr($name, 5)))))] = $value; - } - } - return $headers; - } - else { - $headers = apache_request_headers(); - if (is_array($headers)) { - return $headers; - } - else { - return array(); + // http://www.php.net/manual/en/function.getallheaders.php#84262 + $headers = array(); + foreach ($_SERVER as $name => $value) { + if (substr($name, 0, 5) === "HTTP_") { + $name = $this->normalizeHeaderName(substr($name, 5)); + $headers[$name] = $value; + } elseif ($name === "CONTENT_LENGTH" || $name === "CONTENT_TYPE") { + $name = $this->normalizeHeaderName($name); + $headers[$name] = $value; } } + return $headers; + } + + /** + * @param string $name + * @return string + */ + private function normalizeHeaderName($name) + { + $name = ucwords(strtolower(str_replace("_", " ", $name))); + return str_replace(" ", "-", $name); } /** diff --git a/test/tests/unit/Message/ServerRequestTest.php b/test/tests/unit/Message/ServerRequestTest.php index 891fe06..68407ff 100644 --- a/test/tests/unit/Message/ServerRequestTest.php +++ b/test/tests/unit/Message/ServerRequestTest.php @@ -121,6 +121,20 @@ class ServerRequestTest extends TestCase $this->assertEquals(["application/json"], $request->getHeader("Accept")); } + /** + * @backupGlobals enabled + */ + public function testGetServerRequestReadsContentHeaders() + { + $_SERVER = [ + "CONTENT_LENGTH" => "1024", + "CONTENT_TYPE" => "application/json" + ]; + $request = ServerRequest::getServerRequest(); + $this->assertEquals("1024", $request->getHeaderLine("Content-length")); + $this->assertEquals("application/json", $request->getHeaderLine("Content-type")); + } + public function testGetServerRequestReadsBody() { $body = new NullStream();