private function __construct()
 {
     $this->method = $_SERVER['REQUEST_METHOD'];
     $this->uri = $_SERVER['REQUEST_URI'];
     $this->querystring = $_SERVER['QUERY_STRING'];
     $this->clientAddress = $_SERVER['REMOTE_ADDR'];
     $segments_data = explode("/", substr(isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : $_SERVER['REQUEST_URI'], 1));
     if ($segments_data == null || !is_array($segments_data)) {
         $segments_data = array();
     }
     $this->segments = $segments_data;
     $this->headers = getallheaders();
     $isAjax = false;
     if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
         $isAjax = true;
     }
     $this->isajax = $isAjax;
     $data = array();
     $data = array_merge($data, $_GET);
     $data = array_merge($data, $_POST);
     $data = array_merge($data, $_FILES);
     self::$data = $data;
 }
 private function __construct()
 {
     $domain = $_SERVER['HTTP_HOST'];
     $port = $_SERVER['SERVER_PORT'];
     $protocol = $this->isSecure() ? "https" : "http";
     $uri = $protocol . "://" . $domain . (intval($port) != 80 ? ":{$port}" : "") . $_SERVER['REQUEST_URI'];
     $this->uri = Uri::fromString($uri);
     $this->method = $_SERVER['REQUEST_METHOD'];
     $this->querystring = $_SERVER['QUERY_STRING'];
     $this->clientAddress = $_SERVER['REMOTE_ADDR'];
     $this->protocolVersion = str_replace("HTTP/", "", $_SERVER['SERVER_PROTOCOL']);
     $segments_data = explode("/", substr(isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : $_SERVER['REQUEST_URI'], 1));
     if ($segments_data == null || !is_array($segments_data)) {
         $segments_data = array();
     }
     $this->segments = $segments_data;
     $this->headers = new Collection(getallheaders());
     $isAjax = false;
     if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
         $isAjax = true;
     }
     $this->isajax = $isAjax;
     $data = array();
     $data = array_merge($data, $_GET);
     $data = array_merge($data, $_POST);
     self::$data = $data;
     $files = array();
     if (is_array($_FILES)) {
         foreach (array_keys($_FILES) as $key) {
             if (is_array($_FILES[$key]['tmp_name'])) {
                 $count = count($_FILES[$key]['tmp_name']);
                 $files[$key] = array();
                 for ($i = 0; $i < $count; $i++) {
                     $files[$key][] = new UploadedFile(array('fieldname' => $key, 'tmp_filename' => $_FILES[$key]['tmp_name'][$i], 'origin_filename' => $_FILES[$key]['name'][$i], 'file_type' => $_FILES[$key]['type'][$i], 'upload_error' => $_FILES[$key]['error'][$i]));
                 }
             } else {
                 $files[$key] = new UploadedFile(array('fieldname' => $key, 'tmp_filename' => $_FILES[$key]['tmp_name'], 'origin_filename' => $_FILES[$key]['name'], 'file_type' => $_FILES[$key]['type'], 'upload_error' => $_FILES[$key]['error']));
             }
         }
     }
     $this->files = $files;
 }