source: vendor/psr/http-message/src/RequestInterface.php@ f9c482b

Last change on this file since f9c482b was f9c482b, checked in by Vlado 222039 <vlado.popovski@…>, 7 days ago

Upload new project files

  • Property mode set to 100644
File size: 4.8 KB
Line 
1<?php
2
3namespace Psr\Http\Message;
4
5/**
6 * Representation of an outgoing, client-side request.
7 *
8 * Per the HTTP specification, this interface includes properties for
9 * each of the following:
10 *
11 * - Protocol version
12 * - HTTP method
13 * - URI
14 * - Headers
15 * - Message body
16 *
17 * During construction, implementations MUST attempt to set the Host header from
18 * a provided URI if no Host header is provided.
19 *
20 * Requests are considered immutable; all methods that might change state MUST
21 * be implemented such that they retain the internal state of the current
22 * message and return an instance that contains the changed state.
23 */
24interface RequestInterface extends MessageInterface
25{
26 /**
27 * Retrieves the message's request target.
28 *
29 * Retrieves the message's request-target either as it will appear (for
30 * clients), as it appeared at request (for servers), or as it was
31 * specified for the instance (see withRequestTarget()).
32 *
33 * In most cases, this will be the origin-form of the composed URI,
34 * unless a value was provided to the concrete implementation (see
35 * withRequestTarget() below).
36 *
37 * If no URI is available, and no request-target has been specifically
38 * provided, this method MUST return the string "/".
39 *
40 * @return string
41 */
42 public function getRequestTarget(): string;
43
44 /**
45 * Return an instance with the specific request-target.
46 *
47 * If the request needs a non-origin-form request-target — e.g., for
48 * specifying an absolute-form, authority-form, or asterisk-form —
49 * this method may be used to create an instance with the specified
50 * request-target, verbatim.
51 *
52 * This method MUST be implemented in such a way as to retain the
53 * immutability of the message, and MUST return an instance that has the
54 * changed request target.
55 *
56 * @link http://tools.ietf.org/html/rfc7230#section-5.3 (for the various
57 * request-target forms allowed in request messages)
58 * @param string $requestTarget
59 * @return static
60 */
61 public function withRequestTarget(string $requestTarget): RequestInterface;
62
63
64 /**
65 * Retrieves the HTTP method of the request.
66 *
67 * @return string Returns the request method.
68 */
69 public function getMethod(): string;
70
71 /**
72 * Return an instance with the provided HTTP method.
73 *
74 * While HTTP method names are typically all uppercase characters, HTTP
75 * method names are case-sensitive and thus implementations SHOULD NOT
76 * modify the given string.
77 *
78 * This method MUST be implemented in such a way as to retain the
79 * immutability of the message, and MUST return an instance that has the
80 * changed request method.
81 *
82 * @param string $method Case-sensitive method.
83 * @return static
84 * @throws \InvalidArgumentException for invalid HTTP methods.
85 */
86 public function withMethod(string $method): RequestInterface;
87
88 /**
89 * Retrieves the URI instance.
90 *
91 * This method MUST return a UriInterface instance.
92 *
93 * @link http://tools.ietf.org/html/rfc3986#section-4.3
94 * @return UriInterface Returns a UriInterface instance
95 * representing the URI of the request.
96 */
97 public function getUri(): UriInterface;
98
99 /**
100 * Returns an instance with the provided URI.
101 *
102 * This method MUST update the Host header of the returned request by
103 * default if the URI contains a host component. If the URI does not
104 * contain a host component, any pre-existing Host header MUST be carried
105 * over to the returned request.
106 *
107 * You can opt-in to preserving the original state of the Host header by
108 * setting `$preserveHost` to `true`. When `$preserveHost` is set to
109 * `true`, this method interacts with the Host header in the following ways:
110 *
111 * - If the Host header is missing or empty, and the new URI contains
112 * a host component, this method MUST update the Host header in the returned
113 * request.
114 * - If the Host header is missing or empty, and the new URI does not contain a
115 * host component, this method MUST NOT update the Host header in the returned
116 * request.
117 * - If a Host header is present and non-empty, this method MUST NOT update
118 * the Host header in the returned request.
119 *
120 * This method MUST be implemented in such a way as to retain the
121 * immutability of the message, and MUST return an instance that has the
122 * new UriInterface instance.
123 *
124 * @link http://tools.ietf.org/html/rfc3986#section-4.3
125 * @param UriInterface $uri New request URI to use.
126 * @param bool $preserveHost Preserve the original state of the Host header.
127 * @return static
128 */
129 public function withUri(UriInterface $uri, bool $preserveHost = false): RequestInterface;
130}
Note: See TracBrowser for help on using the repository browser.