public static function createFromServer(array $server)
{
$headerFields = [];
if (isset($server['PHP_AUTH_USER']) && isset($server['PHP_AUTH_PW'])) {
$headerFields['Authorization'] = 'Basic ' . base64_encode($server['PHP_AUTH_USER'] . ':' . $server['PHP_AUTH_PW']);
}
foreach ($server as $name => $value) {
if (strpos($name, 'HTTP_') === 0) {
$name = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))));
$headerFields[$name] = $value;
} elseif ($name == 'REDIRECT_REMOTE_AUTHORIZATION' && !isset($headerFields['Authorization'])) {
$headerFields['Authorization'] = $value;
} elseif (in_array($name, ['CONTENT_TYPE', 'CONTENT_LENGTH'])) {
$name = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', $name))));
$headerFields[$name] = $value;
}
}
return new self($headerFields);
}