public function withAddedHeader($header, $value)
{
if (is_string($value)) {
$value = [$value];
}
if (!is_array($value) || !$this->arrayContainsOnlyStrings($value)) {
throw new InvalidArgumentException('Invalid header value; must be a string or array of strings');
}
HeaderSecurity::assertValidName($header);
self::assertValidHeaderValue($value);
if (!$this->hasHeader($header)) {
return $this->withHeader($header, $value);
}
$normalized = strtolower($header);
$header = $this->headerNames[$normalized];
$new = clone $this;
$new->headers[$header] = array_merge($this->headers[$header], $value);
return $new;
}