/** * Get the request context for an error/exception trace. * * @param Request $request The request to read from. * @return string */ protected function _requestContext($request) { $message = "\nRequest URL: " . $request->url(); $referer = $request->env('HTTP_REFERER'); if ($referer) { $message .= "\nReferer URL: " . $referer; } $clientIp = $request->clientIp(); if ($clientIp && $clientIp !== '::1') { $message .= "\nClient IP: " . $clientIp; } return $message; }
/** * Wrapper method to create a new request from PHP superglobals. * * Uses the $_GET, $_POST, $_FILES, $_COOKIE, $_SERVER ands $_ENV data to construct * the request. * * @return Request */ public static function createFromGlobals() : Request { $request = new Request(); $request->_environment = $_SERVER + $_ENV; $request->queryArgs = $_GET; $request->_bodyStream = new LazyOpenStream('php://input', 'r+'); $data = $_POST; $method = $request->env('REQUEST_METHOD'); if (in_array($method, ['PUT', 'DELETE', 'PATCH']) && strpos($request->contentType(), 'application/x-www-form-urlencoded') === 0) { $data = $request->_bodyStream->getContents(); } parse_str($data, $data); if ($request->env('HTTP_X_HTTP_METHOD_OVERRIDE')) { $data['_method'] = $request->env('HTTP_X_HTTP_METHOD_OVERRIDE'); } $request->_environment['ORIGINAL_REQUEST_METHOD'] = $method; if (isset($data['_method'])) { $request->_environment['REQUEST_METHOD'] = $data['_method']; unset($data['_method']); } $request->data = $data; $request->_cookies = $_COOKIE; $request->_uri = new Uri(self::_url()); foreach ($_FILES as $filename => $file) { $fileObject = new UploadedFile($file['tmp_name'], $file['name'], $file['type'], $file['size'], $file['error']); $request->_files[$filename] = $fileObject; } $request->header(getallheaders()); return $request; }