Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
95.65% covered (success)
95.65%
22 / 23
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
Request
95.65% covered (success)
95.65%
22 / 23
0.00% covered (danger)
0.00%
0 / 1
9
0.00% covered (danger)
0.00%
0 / 1
 __construct
95.65% covered (success)
95.65%
22 / 23
0.00% covered (danger)
0.00%
0 / 1
9
1<?php
2
3namespace BO\Zmsclient\Psr7;
4
5use Slim\Psr7\Interfaces\HeadersInterface;
6use Slim\Psr7\Headers;
7use Psr\Http\Message\UriInterface;
8use Psr\Http\Message\StreamInterface;
9use BO\Slim\Request as SlimRequest;
10
11/**
12 * Layer to change PSR7 implementation if necessary
13 * @SuppressWarnings(Superglobals)
14 * @psalm-suppress PropertyNotSetInConstructor
15 */
16class Request extends SlimRequest implements \Psr\Http\Message\ServerRequestInterface
17{
18    public function __construct(
19        ?string $method = null,
20        mixed $uri = null,
21        mixed $body = 'php://memory',
22        mixed $headers = array()
23    ) {
24        $cookies = [];
25        $serverParams = $_SERVER;
26        $uploadedFiles = [];
27        if (!$uri instanceof UriInterface) {
28            $uri = new Uri(is_string($uri) ? $uri : '');
29        }
30        if (!$headers instanceof HeadersInterface) {
31            $headers = new Headers(is_array($headers) ? $headers : []);
32        }
33        if (!$body instanceof StreamInterface) {
34            if (!is_resource($body)) {
35                $opened = fopen(is_string($body) ? $body : 'php://memory', 'w+b');
36                if ($opened === false) {
37                    throw new \RuntimeException('Unable to open request body stream');
38                }
39                $body = $opened;
40            }
41            $body = new Stream($body);
42        }
43        parent::__construct(
44            $method ?? 'GET',
45            $uri,
46            $headers,
47            $cookies,
48            $serverParams,
49            $body,
50            $uploadedFiles
51        );
52    }
53}