@@ -44,15 +44,7 @@ public function getHeaders()
44
44
*/
45
45
public function getHeadersByName ($ name )
46
46
{
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 );
56
48
}
57
49
58
50
/**
@@ -61,14 +53,10 @@ public function getHeadersByName($name)
61
53
*/
62
54
public function getHeaderByName ($ name )
63
55
{
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 ;
70
58
}
71
- return null ;
59
+ return $ this -> findHeadersByName ( $ name )[ 0 ] ;
72
60
}
73
61
74
62
/**
@@ -92,14 +80,21 @@ public function setHeaders(array $headers)
92
80
93
81
/**
94
82
* @param Header $header
95
- * @param bool $replaceExisting
96
83
* @return $this
97
84
*/
98
- public function addHeader (Header $ header, $ replaceExisting = false )
85
+ public function addAdditionalHeader (Header $ header )
99
86
{
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 ());
103
98
$ this ->headers [] = $ header ;
104
99
return $ this ;
105
100
}
@@ -110,14 +105,7 @@ public function addHeader(Header $header, $replaceExisting = false)
110
105
*/
111
106
public function removeHeadersByName ($ name )
112
107
{
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 );
121
109
return $ this ;
122
110
}
123
111
@@ -127,12 +115,11 @@ public function removeHeadersByName($name)
127
115
*/
128
116
public function removeHeader (Header $ header )
129
117
{
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 ;
135
120
}
121
+ $ headerIndex = $ this ->findHeaderIndex ($ header );
122
+ unset($ this ->headers [$ headerIndex ]);
136
123
return $ this ;
137
124
}
138
125
@@ -142,14 +129,7 @@ public function removeHeader(Header $header)
142
129
*/
143
130
public function hasHeaderWithName ($ name )
144
131
{
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 ;
153
133
}
154
134
155
135
/**
@@ -158,12 +138,7 @@ public function hasHeaderWithName($name)
158
138
*/
159
139
public function hasHeader (Header $ header )
160
140
{
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 ));
167
142
}
168
143
169
144
/**
@@ -342,4 +317,52 @@ public function removeBody()
342
317
return $ this ;
343
318
}
344
319
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
+
345
368
}
0 commit comments