Skip to content

Commit 245ee0b

Browse files
author
Martin Brecht-Precht
committed
Code cleanup of the Message class.
1 parent fedf61a commit 245ee0b

File tree

1 file changed

+71
-48
lines changed

1 file changed

+71
-48
lines changed

src/Request/Message/Message.php

Lines changed: 71 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,7 @@ public function getHeaders()
4444
*/
4545
public function getHeadersByName($name)
4646
{
47-
$headerNameNormalizer = new HeaderNameNormalizer();
48-
$normalizedName = $headerNameNormalizer->normalizeHeaderName($name);
49-
$matchingHeaders = array();
50-
foreach ($this->headers as $header) {
51-
if ($header->getNormalizedName() === $normalizedName) {
52-
$matchingHeaders[] = $header;
53-
}
54-
}
55-
return $matchingHeaders;
47+
return $this->findHeadersByName($name);
5648
}
5749

5850
/**
@@ -61,14 +53,10 @@ public function getHeadersByName($name)
6153
*/
6254
public function getHeaderByName($name)
6355
{
64-
$headerNameNormalizer = new HeaderNameNormalizer();
65-
$normalizedName = $headerNameNormalizer->normalizeHeaderName($name);
66-
foreach ($this->headers as $header) {
67-
if ($header->getNormalizedName() === $normalizedName) {
68-
return $header;
69-
}
56+
if (!$this->hasHeaderWithName($name)) {
57+
return null;
7058
}
71-
return null;
59+
return $this->findHeadersByName($name)[0];
7260
}
7361

7462
/**
@@ -92,14 +80,21 @@ public function setHeaders(array $headers)
9280

9381
/**
9482
* @param Header $header
95-
* @param bool $replaceExisting
9683
* @return $this
9784
*/
98-
public function addHeader(Header $header, $replaceExisting = false)
85+
public function addAdditionalHeader(Header $header)
9986
{
100-
if ($replaceExisting) {
101-
$this->removeHeadersByName($header->getName());
102-
}
87+
$this->headers[] = $header;
88+
return $this;
89+
}
90+
91+
/**
92+
* @param Header $header
93+
* @return $this
94+
*/
95+
public function addHeader(Header $header)
96+
{
97+
$this->removeHeadersByName($header->getName());
10398
$this->headers[] = $header;
10499
return $this;
105100
}
@@ -110,14 +105,7 @@ public function addHeader(Header $header, $replaceExisting = false)
110105
*/
111106
public function removeHeadersByName($name)
112107
{
113-
$headerNameNormalizer = new HeaderNameNormalizer();
114-
$normalizedName = $headerNameNormalizer->normalizeHeaderName($name);
115-
$remainingHeaders = array();
116-
foreach ($this->headers as $header) {
117-
if ($header->getNormalizedName() !== $normalizedName) {
118-
$remainingHeaders[] = $header;
119-
}
120-
}
108+
$this->headers = $this->findHeadersExcludedByName($name);
121109
return $this;
122110
}
123111

@@ -127,12 +115,11 @@ public function removeHeadersByName($name)
127115
*/
128116
public function removeHeader(Header $header)
129117
{
130-
for ($i = 0; $i < count($this->headers); $i++) {
131-
if ($header == $this->headers[$i]) {
132-
unset($this->headers[$i]);
133-
return $this;
134-
}
118+
if (!$this->hasHeader($header)) {
119+
return $this;
135120
}
121+
$headerIndex = $this->findHeaderIndex($header);
122+
unset($this->headers[$headerIndex]);
136123
return $this;
137124
}
138125

@@ -142,14 +129,7 @@ public function removeHeader(Header $header)
142129
*/
143130
public function hasHeaderWithName($name)
144131
{
145-
$headerNameNormalizer = new HeaderNameNormalizer();
146-
$normalizedName = $headerNameNormalizer->normalizeHeaderName($name);
147-
foreach ($this->headers as $header) {
148-
if ($header->getNormalizedName() !== $normalizedName) {
149-
return true;
150-
}
151-
}
152-
return false;
132+
return count($this->findHeadersByName($name)) > 0;
153133
}
154134

155135
/**
@@ -158,12 +138,7 @@ public function hasHeaderWithName($name)
158138
*/
159139
public function hasHeader(Header $header)
160140
{
161-
foreach ($this->headers as $existingHeader) {
162-
if ($existingHeader == $header) {
163-
return true;
164-
}
165-
}
166-
return false;
141+
return !is_null($this->findHeaderIndex($header));
167142
}
168143

169144
/**
@@ -342,4 +317,52 @@ public function removeBody()
342317
return $this;
343318
}
344319

320+
/**
321+
* @param string $name
322+
* @return Header[]
323+
*/
324+
private function findHeadersByName($name)
325+
{
326+
$headerNameNormalizer = new HeaderNameNormalizer();
327+
$normalizedName = $headerNameNormalizer->normalizeHeaderName($name);
328+
$matchingHeaders = array();
329+
foreach ($this->headers as $header) {
330+
if ($header->getNormalizedName() === $normalizedName) {
331+
$matchingHeaders[] = $header;
332+
}
333+
}
334+
return $matchingHeaders;
335+
}
336+
337+
/**
338+
* @param Header $header
339+
* @return int
340+
*/
341+
private function findHeaderIndex(Header $header)
342+
{
343+
for ($i = 0; $i < count($this->headers); $i++) {
344+
if ($this->headers[$i] === $header) {
345+
return $i;
346+
}
347+
}
348+
return null;
349+
}
350+
351+
/**
352+
* @param string $name
353+
* @return Header[]
354+
*/
355+
private function findHeadersExcludedByName($name)
356+
{
357+
$headerNameNormalizer = new HeaderNameNormalizer();
358+
$normalizedName = $headerNameNormalizer->normalizeHeaderName($name);
359+
$matchingHeaders = array();
360+
foreach ($this->headers as $header) {
361+
if ($header->getNormalizedName() !== $normalizedName) {
362+
$matchingHeaders[] = $header;
363+
}
364+
}
365+
return $matchingHeaders;
366+
}
367+
345368
}

0 commit comments

Comments
 (0)