2323trait HttpClientTrait
2424{
2525 private static $ CHUNK_SIZE = 16372 ;
26+ private static $ emptyDefaults ;
2627
2728 /**
2829 * 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
4041 }
4142 }
4243
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+
4354 $ options = self ::mergeDefaultOptions ($ options , $ defaultOptions , $ allowExtraOptions );
4455
4556 $ buffer = $ options ['buffer ' ] ?? true ;
@@ -189,6 +200,16 @@ private static function mergeDefaultOptions(array $options, array $defaultOption
189200
190201 $ options += $ defaultOptions ;
191202
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+
192213 if (isset ($ defaultOptions ['extra ' ])) {
193214 $ options ['extra ' ] += $ defaultOptions ['extra ' ];
194215 }
@@ -221,9 +242,9 @@ private static function mergeDefaultOptions(array $options, array $defaultOption
221242
222243 $ alternatives = [];
223244
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 ;
227248 }
228249 }
229250
0 commit comments