qoob/utils/statusCodes.php
<?php
/**
* status codes
* a class for setting HTTP protocol status codes.
* also provides constants for easy use.
*
* thanx to Kris Jordan of the Recess Framework (http://www.recessframework.com/)
* for coming up with such a cool idea.
*
* @author xero harrison <x@xero.nu>
* @copyright (cc) creative commons - attribution-shareAlike 3.0 unported
* @version 1.0
* @package qoob
* @subpackage utils
* @category header
*/
final class statusCodes {
/**
* @var int $code the current code
*/
private static $code = 200;
/**
* HTTP status code constants
*/
// --- informational
const HTTP_CONTINUE = 100;
const HTTP_SWITCHING_PROTOCOLS = 101;
// --- successful
const HTTP_OK = 200;
const HTTP_CREATED = 201;
const HTTP_ACCEPTED = 202;
const HTTP_NONAUTHORITATIVE_INFORMATION = 203;
const HTTP_NO_CONTENT = 204;
const HTTP_RESET_CONTENT = 205;
const HTTP_PARTIAL_CONTENT = 206;
// --- redirection
const HTTP_MULTIPLE_CHOICES = 300;
const HTTP_MOVED_PERMANENTLY = 301;
const HTTP_FOUND = 302;
const HTTP_SEE_OTHER = 303;
const HTTP_NOT_MODIFIED = 304;
const HTTP_USE_PROXY = 305;
const HTTP_UNUSED= 306;
const HTTP_TEMPORARY_REDIRECT = 307;
// --- client error
const errorCodesBeginAt = 400;
const HTTP_BAD_REQUEST = 400;
const HTTP_UNAUTHORIZED = 401;
const HTTP_PAYMENT_REQUIRED = 402;
const HTTP_FORBIDDEN = 403;
const HTTP_NOT_FOUND = 404;
const HTTP_METHOD_NOT_ALLOWED = 405;
const HTTP_NOT_ACCEPTABLE = 406;
const HTTP_PROXY_AUTHENTICATION_REQUIRED = 407;
const HTTP_REQUEST_TIMEOUT = 408;
const HTTP_CONFLICT = 409;
const HTTP_GONE = 410;
const HTTP_LENGTH_REQUIRED = 411;
const HTTP_PRECONDITION_FAILED = 412;
const HTTP_REQUEST_ENTITY_TOO_LARGE = 413;
const HTTP_REQUEST_URI_TOO_LONG = 414;
const HTTP_UNSUPPORTED_MEDIA_TYPE = 415;
const HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
const HTTP_EXPECTATION_FAILED = 417;
// --- server error
const HTTP_INTERNAL_SERVER_ERROR = 500;
const HTTP_NOT_IMPLEMENTED = 501;
const HTTP_BAD_GATEWAY = 502;
const HTTP_SERVICE_UNAVAILABLE = 503;
const HTTP_GATEWAY_TIMEOUT = 504;
const HTTP_VERSION_NOT_SUPPORTED = 505;
/**
* @var array $messages status codes messages array
*/
private static $messages = array(
// --- informational
100=>'100 Continue',
101=>'101 Switching Protocols',
// --- successful
200=>'200 OK',
201=>'201 Created',
202=>'202 Accepted',
203=>'203 Non-Authoritative Information',
204=>'204 No Content',
205=>'205 Reset Content',
206=>'206 Partial Content',
// --- redirection
300=>'300 Multiple Choices',
301=>'301 Moved Permanently',
302=>'302 Found',
303=>'303 See Other',
304=>'304 Not Modified',
305=>'305 Use Proxy',
306=>'306 (Unused)',
307=>'307 Temporary Redirect',
// --- client error
400=>'400 Bad Request',
401=>'401 Unauthorized',
402=>'402 Payment Required',
403=>'403 Forbidden',
404=>'404 Not Found',
405=>'405 Method Not Allowed',
406=>'406 Not Acceptable',
407=>'407 Proxy Authentication Required',
408=>'408 Request Timeout',
409=>'409 Conflict',
410=>'410 Gone',
411=>'411 Length Required',
412=>'412 Precondition Failed',
413=>'413 Request Entity Too Large',
414=>'414 Request-URI Too Long',
415=>'415 Unsupported Media Type',
416=>'416 Requested Range Not Satisfiable',
417=>'417 Expectation Failed',
// --- server error
500=>'500 Internal Server Error',
501=>'501 Not Implemented',
502=>'502 Bad Gateway',
503=>'503 Service Unavailable',
504=>'504 Gateway Timeout',
505=>'505 HTTP Version Not Supported'
);
/**
* returns the current status code
*/
public static function getHeader() {
return self::$code;
}
/**
* sets the http header with a given status code
*/
public static function setHeader($code) {
self::$code = $code;
header("HTTP/1.1 " . self::$messages[$code]);
}
/**
* returns the message for a given status code
*/
public static function getMessage($code) {
return self::$messages[$code];
}
}
?>