130 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			130 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace Psr\Http\Message; | ||
|  | 
 | ||
|  | /** | ||
|  |  * Representation of an outgoing, client-side request. | ||
|  |  * | ||
|  |  * Per the HTTP specification, this interface includes properties for | ||
|  |  * each of the following: | ||
|  |  * | ||
|  |  * - Protocol version | ||
|  |  * - HTTP method | ||
|  |  * - URI | ||
|  |  * - Headers | ||
|  |  * - Message body | ||
|  |  * | ||
|  |  * During construction, implementations MUST attempt to set the Host header from | ||
|  |  * a provided URI if no Host header is provided. | ||
|  |  * | ||
|  |  * Requests are considered immutable; all methods that might change state MUST | ||
|  |  * be implemented such that they retain the internal state of the current | ||
|  |  * message and return an instance that contains the changed state. | ||
|  |  */ | ||
|  | interface RequestInterface extends MessageInterface | ||
|  | { | ||
|  |     /** | ||
|  |      * Retrieves the message's request target. | ||
|  |      * | ||
|  |      * Retrieves the message's request-target either as it will appear (for | ||
|  |      * clients), as it appeared at request (for servers), or as it was | ||
|  |      * specified for the instance (see withRequestTarget()). | ||
|  |      * | ||
|  |      * In most cases, this will be the origin-form of the composed URI, | ||
|  |      * unless a value was provided to the concrete implementation (see | ||
|  |      * withRequestTarget() below). | ||
|  |      * | ||
|  |      * If no URI is available, and no request-target has been specifically | ||
|  |      * provided, this method MUST return the string "/". | ||
|  |      * | ||
|  |      * @return string | ||
|  |      */ | ||
|  |     public function getRequestTarget(); | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Return an instance with the specific request-target. | ||
|  |      * | ||
|  |      * If the request needs a non-origin-form request-target — e.g., for | ||
|  |      * specifying an absolute-form, authority-form, or asterisk-form — | ||
|  |      * this method may be used to create an instance with the specified | ||
|  |      * request-target, verbatim. | ||
|  |      * | ||
|  |      * This method MUST be implemented in such a way as to retain the | ||
|  |      * immutability of the message, and MUST return an instance that has the | ||
|  |      * changed request target. | ||
|  |      * | ||
|  |      * @link http://tools.ietf.org/html/rfc7230#section-5.3 (for the various
 | ||
|  |      *     request-target forms allowed in request messages) | ||
|  |      * @param mixed $requestTarget | ||
|  |      * @return static | ||
|  |      */ | ||
|  |     public function withRequestTarget($requestTarget); | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Retrieves the HTTP method of the request. | ||
|  |      * | ||
|  |      * @return string Returns the request method. | ||
|  |      */ | ||
|  |     public function getMethod(); | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Return an instance with the provided HTTP method. | ||
|  |      * | ||
|  |      * While HTTP method names are typically all uppercase characters, HTTP | ||
|  |      * method names are case-sensitive and thus implementations SHOULD NOT | ||
|  |      * modify the given string. | ||
|  |      * | ||
|  |      * This method MUST be implemented in such a way as to retain the | ||
|  |      * immutability of the message, and MUST return an instance that has the | ||
|  |      * changed request method. | ||
|  |      * | ||
|  |      * @param string $method Case-sensitive method. | ||
|  |      * @return static | ||
|  |      * @throws \InvalidArgumentException for invalid HTTP methods. | ||
|  |      */ | ||
|  |     public function withMethod($method); | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Retrieves the URI instance. | ||
|  |      * | ||
|  |      * This method MUST return a UriInterface instance. | ||
|  |      * | ||
|  |      * @link http://tools.ietf.org/html/rfc3986#section-4.3
 | ||
|  |      * @return UriInterface Returns a UriInterface instance | ||
|  |      *     representing the URI of the request. | ||
|  |      */ | ||
|  |     public function getUri(); | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Returns an instance with the provided URI. | ||
|  |      * | ||
|  |      * This method MUST update the Host header of the returned request by | ||
|  |      * default if the URI contains a host component. If the URI does not | ||
|  |      * contain a host component, any pre-existing Host header MUST be carried | ||
|  |      * over to the returned request. | ||
|  |      * | ||
|  |      * You can opt-in to preserving the original state of the Host header by | ||
|  |      * setting `$preserveHost` to `true`. When `$preserveHost` is set to | ||
|  |      * `true`, this method interacts with the Host header in the following ways: | ||
|  |      * | ||
|  |      * - If the Host header is missing or empty, and the new URI contains | ||
|  |      *   a host component, this method MUST update the Host header in the returned | ||
|  |      *   request. | ||
|  |      * - If the Host header is missing or empty, and the new URI does not contain a | ||
|  |      *   host component, this method MUST NOT update the Host header in the returned | ||
|  |      *   request. | ||
|  |      * - If a Host header is present and non-empty, this method MUST NOT update | ||
|  |      *   the Host header in the returned request. | ||
|  |      * | ||
|  |      * This method MUST be implemented in such a way as to retain the | ||
|  |      * immutability of the message, and MUST return an instance that has the | ||
|  |      * new UriInterface instance. | ||
|  |      * | ||
|  |      * @link http://tools.ietf.org/html/rfc3986#section-4.3
 | ||
|  |      * @param UriInterface $uri New request URI to use. | ||
|  |      * @param bool $preserveHost Preserve the original state of the Host header. | ||
|  |      * @return static | ||
|  |      */ | ||
|  |     public function withUri(UriInterface $uri, $preserveHost = false); | ||
|  | } |