1: <?php declare(strict_types=1);
2:
3: namespace Salient\Http\Message;
4:
5: use Psr\Http\Message\MessageInterface as PsrMessageInterface;
6: use Psr\Http\Message\RequestInterface as PsrRequestInterface;
7:
8: /**
9: * @api
10: *
11: * @extends AbstractRequest<PsrRequestInterface>
12: */
13: class Request extends AbstractRequest
14: {
15: /**
16: * @api
17: */
18: final public function __construct(
19: string $method,
20: $uri,
21: $body = null,
22: $headers = null,
23: ?string $requestTarget = null,
24: string $version = '1.1'
25: ) {
26: parent::__construct($method, $uri, $body, $headers, $requestTarget, $version);
27: }
28:
29: /**
30: * @inheritDoc
31: */
32: public static function fromPsr7(PsrMessageInterface $message): Request
33: {
34: return $message instanceof static
35: ? $message
36: : new static(
37: $message->getMethod(),
38: $message->getUri(),
39: $message->getBody(),
40: $message->getHeaders(),
41: $message->getRequestTarget(),
42: $message->getProtocolVersion(),
43: );
44: }
45: }
46: