MediaWiki  master
RequestFromGlobals.php
Go to the documentation of this file.
1 <?php
2 
3 namespace MediaWiki\Rest;
4 
8 
9 // phpcs:disable MediaWiki.Usage.SuperGlobalsUsage.SuperGlobals
10 
16  private $uri;
17  private $protocol;
18  private $uploadedFiles;
19 
24  public function __construct( $params = [] ) {
25  parent::__construct( $params['cookiePrefix'] ?? '' );
26  }
27 
28  // RequestInterface
29 
30  public function getMethod() {
31  return $_SERVER['REQUEST_METHOD'] ?? 'GET';
32  }
33 
34  public function getUri() {
35  if ( $this->uri === null ) {
36  $this->uri = new Uri( \WebRequest::getGlobalRequestURL() );
37  }
38  return $this->uri;
39  }
40 
41  // MessageInterface
42 
43  public function getProtocolVersion() {
44  if ( $this->protocol === null ) {
45  $serverProtocol = $_SERVER['SERVER_PROTOCOL'] ?? '';
46  $prefixLength = strlen( 'HTTP/' );
47  if ( strncmp( $serverProtocol, 'HTTP/', $prefixLength ) === 0 ) {
48  $this->protocol = substr( $serverProtocol, $prefixLength );
49  } else {
50  $this->protocol = '1.1';
51  }
52  }
53  return $this->protocol;
54  }
55 
56  protected function initHeaders() {
57  if ( function_exists( 'apache_request_headers' ) ) {
58  $this->setHeaders( apache_request_headers() );
59  } else {
60  $headers = [];
61  foreach ( $_SERVER as $name => $value ) {
62  if ( substr( $name, 0, 5 ) === 'HTTP_' ) {
63  $name = strtolower( str_replace( '_', '-', substr( $name, 5 ) ) );
64  $headers[$name] = $value;
65  } elseif ( $name === 'CONTENT_LENGTH' ) {
66  $headers['content-length'] = $value;
67  }
68  }
69  $this->setHeaders( $headers );
70  }
71  }
72 
73  public function getBody() {
74  return new LazyOpenStream( 'php://input', 'r' );
75  }
76 
77  // ServerRequestInterface
78 
79  public function getServerParams() {
80  return $_SERVER;
81  }
82 
83  public function getCookieParams() {
84  return $_COOKIE;
85  }
86 
87  public function getQueryParams() {
88  return $_GET;
89  }
90 
91  public function getUploadedFiles() {
92  if ( $this->uploadedFiles === null ) {
93  $this->uploadedFiles = ServerRequest::normalizeFiles( $_FILES );
94  }
95  return $this->uploadedFiles;
96  }
97 
98  public function getPostParams() {
99  return $_POST;
100  }
101 }
getPostParams()
Retrieve POST form parameters.
getUploadedFiles()
Retrieve normalized file upload data.
getServerParams()
Retrieve server parameters.
Shared code between RequestData and RequestFromGlobals.
Definition: RequestBase.php:8
getQueryParams()
Retrieve query string arguments.
getMethod()
Retrieves the HTTP method of the request.
getProtocolVersion()
Retrieves the HTTP protocol version as a string.
static getGlobalRequestURL()
Return the path and query string portion of the main request URI.
Definition: WebRequest.php:860
getBody()
Gets the body of the message.
This is a request class that gets data directly from the superglobals and other global PHP state...
getUri()
Retrieves the URI instance.
setHeaders( $headers)
Erase any existing headers and replace them with the specified header lines.
Definition: RequestBase.php:53