Example #1
0
 /**
  * Builds a new URI object from server environment
  *
  * @param array $environment Server environment (e.g. $_SERVER)
  * @return Uri
  */
 public static function fromEnvironment(array $environment)
 {
     $uri = new self();
     $uri->setScheme(isset($environment['HTTPS']) && ($environment['HTTPS'] == 'on' || $environment['HTTPS'] == 1) || isset($environment['HTTP_X_FORWARDED_PROTO']) && $environment['HTTP_X_FORWARDED_PROTO'] == 'https' ? 'https' : 'http');
     $uri->setHostname($environment['HTTP_HOST']);
     $uri->setPort(isset($environment['SERVER_PORT']) ? (int) $environment['SERVER_PORT'] : NULL);
     $uri->setUsername(isset($environment['PHP_AUTH_USER']) ? $environment['PHP_AUTH_USER'] : NULL);
     $uri->setPassword(isset($environment['PHP_AUTH_PW']) ? $environment['PHP_AUTH_PW'] : NULL);
     $requestUriParts = explode('?', $environment['REQUEST_URI'], 2);
     $uri->setPath($requestUriParts[0]);
     if (isset($requestUriParts[1])) {
         $queryParts = explode('#', $requestUriParts[1], 2);
         $uri->setQuery($queryParts[0]);
         $uri->setFragment(isset($queryParts[1]) ? $queryParts[1] : NULL);
     }
     return $uri;
 }