Improved HttpRequest casting code.
This commit is contained in:
parent
d5b5efab46
commit
ecc9d9a348
2 changed files with 34 additions and 4 deletions
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
|||
0.2503.82012
|
||||
0.2503.82034
|
||||
|
|
|
@ -379,15 +379,45 @@ class HttpRequest extends HttpMessage implements ServerRequestInterface {
|
|||
if($request instanceof HttpRequest)
|
||||
return $request;
|
||||
|
||||
/** @var array<string, list<string|null>> */
|
||||
$queryParams = (function(array $raw) {
|
||||
$params = [];
|
||||
|
||||
foreach($raw as $name => $value) {
|
||||
if(is_scalar($value))
|
||||
$value = [$value];
|
||||
if(!is_array($value))
|
||||
$value = [null];
|
||||
|
||||
$params[(string)$name] = $value;
|
||||
}
|
||||
|
||||
return $params;
|
||||
})($request->getQueryParams());
|
||||
|
||||
$cookieParams = (function(array $raw) {
|
||||
$params = [];
|
||||
|
||||
foreach($raw as $name => $value) {
|
||||
if(!is_scalar($value))
|
||||
continue;
|
||||
|
||||
$params[(string)$name] = (string)$value;
|
||||
}
|
||||
|
||||
return $params;
|
||||
})($request->getCookieParams());
|
||||
|
||||
return new HttpRequest(
|
||||
$request->getProtocolVersion(),
|
||||
$request->getHeaders(), // @phpstan-ignore-line: dont care
|
||||
// @phpstan-ignore-next-line: interface erroneously defines as string[][] instead of array<string, string[]>
|
||||
$request->getHeaders(),
|
||||
$request->getBody(),
|
||||
[],
|
||||
$request->getMethod(),
|
||||
HttpUri::castUri($request->getUri()),
|
||||
$request->getQueryParams(), // @phpstan-ignore-line: dont care
|
||||
$request->getCookieParams(), // @phpstan-ignore-line: dont care
|
||||
$queryParams,
|
||||
$cookieParams,
|
||||
$request->getParsedBody(), // @phpstan-ignore-line: dont care
|
||||
$request->getUploadedFiles(), // @phpstan-ignore-line: dont care
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue