diff --git a/src/Symfony/Component/HttpFoundation/Response.php b/src/Symfony/Component/HttpFoundation/Response.php
index ae6a3896e0..6950793616 100644
--- a/src/Symfony/Component/HttpFoundation/Response.php
+++ b/src/Symfony/Component/HttpFoundation/Response.php
@@ -379,7 +379,10 @@ class Response
* Sets the response status code.
*
* @param integer $code HTTP status code
- * @param string $text HTTP status text
+ * @param mixed $text HTTP status text
+ *
+ * If the status text is null it will be automatically populated for the known
+ * status codes and left empty otherwise.
*
* @return Response
*
@@ -389,12 +392,24 @@ class Response
*/
public function setStatusCode($code, $text = null)
{
- $this->statusCode = (int) $code;
+ $this->statusCode = $code = (int) $code;
if ($this->isInvalid()) {
throw new \InvalidArgumentException(sprintf('The HTTP status code "%s" is not valid.', $code));
}
- $this->statusText = false === $text ? '' : (null === $text ? self::$statusTexts[$this->statusCode] : $text);
+ if (null === $text) {
+ $this->statusText = isset(self::$statusTexts[$code]) ? self::$statusTexts[$code] : '';
+
+ return $this;
+ }
+
+ if (false === $text) {
+ $this->statusText = '';
+
+ return $this;
+ }
+
+ $this->statusText = $text;
return $this;
}
diff --git a/src/Symfony/Component/HttpFoundation/Tests/ResponseTest.php b/src/Symfony/Component/HttpFoundation/Tests/ResponseTest.php
index 4edcd6dd1d..cbbdd29aa0 100644
--- a/src/Symfony/Component/HttpFoundation/Tests/ResponseTest.php
+++ b/src/Symfony/Component/HttpFoundation/Tests/ResponseTest.php
@@ -367,6 +367,33 @@ class ResponseTest extends \PHPUnit_Framework_TestCase
$this->assertFalse($response->isInvalid());
}
+ /**
+ * @dataProvider getStatusCodeFixtures
+ */
+ public function testSetStatusCode($code, $text, $expectedText)
+ {
+ $response = new Response();
+
+ $response->setStatusCode($code, $text);
+
+ $statusText = new \ReflectionProperty($response, 'statusText');
+ $statusText->setAccessible(true);
+
+ $this->assertEquals($expectedText, $statusText->getValue($response));
+ }
+
+ public function getStatusCodeFixtures()
+ {
+ return array(
+ array('200', null, 'OK'),
+ array('200', false, ''),
+ array('200', 'foo', 'foo'),
+ array('199', null, ''),
+ array('199', false, ''),
+ array('199', 'foo', 'foo')
+ );
+ }
+
public function testIsInformational()
{
$response = new Response('', 100);
diff --git a/src/Symfony/Component/Validator/Mapping/Loader/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd b/src/Symfony/Component/Validator/Mapping/Loader/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd
index 6d5d3b5f95..4a9bc33989 100644
--- a/src/Symfony/Component/Validator/Mapping/Loader/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd
+++ b/src/Symfony/Component/Validator/Mapping/Loader/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd
@@ -51,12 +51,12 @@
definitions.
]]>
-
+
-
+
@@ -144,4 +144,4 @@
-
\ No newline at end of file
+