Added Response::getStatusLine() function. This makes it more extensible and compatible with PHP 5.3.
This commit is contained in:
parent
ef31fd7292
commit
87a3c063da
|
|
@ -30,6 +30,14 @@ class Response {
|
||||||
*/
|
*/
|
||||||
protected $headers;
|
protected $headers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The protocol. Set this to the protocol you wish to use, such as
|
||||||
|
* "HTTP/1.1". If unset, the class uses $_SERVER['SERVER_PROTOCOL']
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $protocol;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* HTTP status code
|
* HTTP status code
|
||||||
* @var int
|
* @var int
|
||||||
|
|
@ -168,8 +176,7 @@ class Response {
|
||||||
public function respond($headersOnly = false) {
|
public function respond($headersOnly = false) {
|
||||||
|
|
||||||
// Output the HTTP status code.
|
// Output the HTTP status code.
|
||||||
// TODO: Available in 5.4+. PHP.net has a good alternative in the comments.
|
header($this->getStatusLine($this->statusCode));
|
||||||
http_response_code($this->statusCode);
|
|
||||||
|
|
||||||
// Output each header.
|
// Output each header.
|
||||||
foreach ($this->headers as $header => $value) {
|
foreach ($this->headers as $header => $value) {
|
||||||
|
|
@ -183,6 +190,69 @@ class Response {
|
||||||
|
|
||||||
} // respond()
|
} // respond()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return HTTP status line, e.g. HTTP/1.1 200 OK.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
* @throws \UnexpectedValueException
|
||||||
|
*/
|
||||||
|
protected function getStatusLine() {
|
||||||
|
|
||||||
|
switch ($this->statusCode) {
|
||||||
|
case 100: $text = 'Continue'; break;
|
||||||
|
case 101: $text = 'Switching Protocols'; break;
|
||||||
|
case 200: $text = 'OK'; break;
|
||||||
|
case 201: $text = 'Created'; break;
|
||||||
|
case 202: $text = 'Accepted'; break;
|
||||||
|
case 203: $text = 'Non-Authoritative Information'; break;
|
||||||
|
case 204: $text = 'No Content'; break;
|
||||||
|
case 205: $text = 'Reset Content'; break;
|
||||||
|
case 206: $text = 'Partial Content'; break;
|
||||||
|
case 300: $text = 'Multiple Choices'; break;
|
||||||
|
case 301: $text = 'Moved Permanently'; break;
|
||||||
|
case 302: $text = 'Moved Temporarily'; break;
|
||||||
|
case 303: $text = 'See Other'; break;
|
||||||
|
case 304: $text = 'Not Modified'; break;
|
||||||
|
case 305: $text = 'Use Proxy'; break;
|
||||||
|
case 400: $text = 'Bad Request'; break;
|
||||||
|
case 401: $text = 'Unauthorized'; break;
|
||||||
|
case 402: $text = 'Payment Required'; break;
|
||||||
|
case 403: $text = 'Forbidden'; break;
|
||||||
|
case 404: $text = 'Not Found'; break;
|
||||||
|
case 405: $text = 'Method Not Allowed'; break;
|
||||||
|
case 406: $text = 'Not Acceptable'; break;
|
||||||
|
case 407: $text = 'Proxy Authentication Required'; break;
|
||||||
|
case 408: $text = 'Request Time-out'; break;
|
||||||
|
case 409: $text = 'Conflict'; break;
|
||||||
|
case 410: $text = 'Gone'; break;
|
||||||
|
case 411: $text = 'Length Required'; break;
|
||||||
|
case 412: $text = 'Precondition Failed'; break;
|
||||||
|
case 413: $text = 'Request Entity Too Large'; break;
|
||||||
|
case 414: $text = 'Request-URI Too Large'; break;
|
||||||
|
case 415: $text = 'Unsupported Media Type'; break;
|
||||||
|
case 500: $text = 'Internal Server Error'; break;
|
||||||
|
case 501: $text = 'Not Implemented'; break;
|
||||||
|
case 502: $text = 'Bad Gateway'; break;
|
||||||
|
case 503: $text = 'Service Unavailable'; break;
|
||||||
|
case 504: $text = 'Gateway Time-out'; break;
|
||||||
|
case 505: $text = 'HTTP Version not supported'; break;
|
||||||
|
default:
|
||||||
|
throw new \UnexpectedValueException('Unknown http status code "' . $this->statusCode . '"');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($this->protocol)) {
|
||||||
|
$protocol = $this->protocol;
|
||||||
|
} elseif (isset($_SERVER['SERVER_PROTOCOL'])) {
|
||||||
|
$protocol = $_SERVER['SERVER_PROTOCOL'];
|
||||||
|
} else {
|
||||||
|
$protocol = 'HTTP/1.1';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $protocol . ' ' . $this->statusCode . ' ' . $text;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
} // Response
|
} // Response
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue