23
23
trait HttpClientTrait
24
24
{
25
25
private static $ CHUNK_SIZE = 16372 ;
26
+ private static $ emptyDefaults ;
26
27
27
28
/**
28
29
* Validates and normalizes method, URL and options, and merges them with defaults.
@@ -40,6 +41,16 @@ private static function prepareRequest(?string $method, ?string $url, array $opt
40
41
}
41
42
}
42
43
44
+ if (null === self ::$ emptyDefaults ) {
45
+ self ::$ emptyDefaults = [];
46
+
47
+ foreach ($ defaultOptions as $ k => $ v ) {
48
+ if (null !== $ v ) {
49
+ self ::$ emptyDefaults [$ k ] = $ v ;
50
+ }
51
+ }
52
+ }
53
+
43
54
$ options = self ::mergeDefaultOptions ($ options , $ defaultOptions , $ allowExtraOptions );
44
55
45
56
$ buffer = $ options ['buffer ' ] ?? true ;
@@ -189,6 +200,16 @@ private static function mergeDefaultOptions(array $options, array $defaultOption
189
200
190
201
$ options += $ defaultOptions ;
191
202
203
+ if (null === self ::$ emptyDefaults ) {
204
+ self ::$ emptyDefaults = [];
205
+ }
206
+
207
+ foreach (self ::$ emptyDefaults as $ k => $ v ) {
208
+ if (!isset ($ options [$ k ])) {
209
+ $ options [$ k ] = $ v ;
210
+ }
211
+ }
212
+
192
213
if (isset ($ defaultOptions ['extra ' ])) {
193
214
$ options ['extra ' ] += $ defaultOptions ['extra ' ];
194
215
}
@@ -221,9 +242,9 @@ private static function mergeDefaultOptions(array $options, array $defaultOption
221
242
222
243
$ alternatives = [];
223
244
224
- foreach ($ defaultOptions as $ key => $ v ) {
225
- if (levenshtein ($ name , $ key ) <= \strlen ($ name ) / 3 || str_contains ($ key , $ name )) {
226
- $ alternatives [] = $ key ;
245
+ foreach ($ defaultOptions as $ k => $ v ) {
246
+ if (levenshtein ($ name , $ k ) <= \strlen ($ name ) / 3 || str_contains ($ k , $ name )) {
247
+ $ alternatives [] = $ k ;
227
248
}
228
249
}
229
250
0 commit comments