Skip to content

Commit dcd84bb

Browse files
siwinskikirill-konshin
authored andcommitted
[MessageTrait] Fix withAddedHeader() with array $value (#4)
1 parent f263f7e commit dcd84bb

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

src/MessageTrait.php

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,18 @@ public function withAddedHeader($header, $value)
9191
return $this->withHeader($header, $value);
9292
}
9393

94+
$header = trim($header);
95+
$name = strtolower($header);
96+
97+
$value = (array) $value;
98+
foreach ($value as &$v) {
99+
$v = trim($v);
100+
}
101+
94102
$new = clone $this;
95-
$new->headers[strtolower($header)][] = $value;
96-
$new->headerLines[$header][] = $value;
103+
$new->headers[$name] = array_merge($new->headers[$name], $value);
104+
$new->headerLines[$header] = array_merge($new->headerLines[$header], $value);
105+
97106
return $new;
98107
}
99108

tests/ResponseTest.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,14 @@ public function testNewInstanceWhenAddingHeader()
120120
$this->assertEquals('Bar, Baz', $r2->getHeaderLine('foo'));
121121
}
122122

123+
public function testNewInstanceWhenAddingHeaderArray()
124+
{
125+
$r = new Response(200, array('Foo' => 'Bar'));
126+
$r2 = $r->withAddedHeader('Foo', array('Baz', 'Qux'));
127+
$this->assertNotSame($r, $r2);
128+
$this->assertEquals(array('Bar', 'Baz', 'Qux'), $r2->getHeader('foo'));
129+
}
130+
123131
public function testNewInstanceWhenAddingHeaderThatWasNotThereBefore()
124132
{
125133
$r = new Response(200, array('Foo' => 'Bar'));
@@ -142,5 +150,5 @@ public function testBodyConsistent()
142150
$r = new Response(200, array(), '0');
143151
$this->assertEquals('0', (string)$r->getBody());
144152
}
145-
153+
146154
}

0 commit comments

Comments
 (0)