Class CakeResponse
CakeResponse is responsible for managing the response text, status and headers of a HTTP response.
By default controllers will use this class to render their response. If you are going to use a custom response class it should subclass this object in order to ensure compatibility.
Copyright: Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
License: License (http://www.opensource.org/licenses/mit-license.php)
Location: Cake/Network/CakeResponse.php
Properties summary
-
$_body
protectedstring
Buffer string for response message -
$_charset
protectedstring
The charset the response body is encoded with -
$_contentType
protectedinteger
Content type to send. This can be an 'extension' that will be transformed using the $_mimetypes array or a complete mime-type
-
$_headers
protectedarray
Buffer list of headers -
$_mimeTypes
protectedarray
Holds known mime type mappings -
$_protocol
protectedstring
Protocol header to send to the client -
$_status
protectedinteger
Status code to send to the client -
$_statusCodes
protectedarray
Holds HTTP response statuses
Method Summary
-
__construct() public
Class constructor -
__toString() public
String conversion. Fetches the response body as a string. Does not send headers.
-
_sendContent() protected
Sends a content string to the client. -
_sendHeader() protected
Sends a header to the client. -
_setContentLength() protected
Calculates the correct Content-Length and sets it as a header in the response Will not set the value if already set or if the output is compressed.
-
body() public
Buffers the response message to be sent if $content is null the current buffer is returned
-
cache() public
Sets the correct headers to instruct the client to cache the response. -
charset() public
Sets the response charset if $charset is null the current charset is returned
-
compress() public
Sets the correct output buffering handler to send a compressed response. Responses will be compressed with zlib, if the extension is available.
-
disableCache() public
Sets the correct headers to instruct the client to not cache the response -
download() public
Sets the correct headers to instruct the browser to download the response as a file. -
getMimeType() public
Returns the mime type definition for an alias -
header() public
Buffers a header string to be sent Returns the complete list of buffered headers
-
httpCodes() public
Queries & sets valid HTTP response codes & messages. -
mapType() public
Maps a content-type back to an alias -
outputCompressed() public
Returns whether the resulting output will be compressed by PHP -
send() public
Sends the complete response to the client including headers and message body. Will echo out the content in the response body.
-
statusCode() public
Sets the HTTP status code to be sent if $code is null the current code is returned
-
type() public
Sets the response content type. It can be either a file extension which will be mapped internally to a mime-type or a string representing a mime-type if $contentType is null the current content type is returned if $contentType is an associative array, it will be stored as a content type definition
Method Detail
__construct() public ¶
__construct( array $options = array() )
Class constructor
Parameters
- array $options optional array()
list of parameters to setup the response. Possible values are: - body: the response text that should be sent to the client - status: the HTTP status code to respond with - type: a complete mime-type string or an extension mapped in this class - charset: the charset for the response body
__toString() public ¶
__toString( )
String conversion. Fetches the response body as a string. Does not send headers.
Returns
_sendContent() protected ¶
_sendContent( string $content )
Sends a content string to the client.
Parameters
- string $content
- string to send as response body
_sendHeader() protected ¶
_sendHeader( string $name , string $value = null )
Sends a header to the client.
Parameters
- string $name
- the header name
- string $value optional null
- the header value
_setContentLength() protected ¶
_setContentLength( )
Calculates the correct Content-Length and sets it as a header in the response Will not set the value if already set or if the output is compressed.
body() public ¶
body( string $content = null )
Buffers the response message to be sent if $content is null the current buffer is returned
Parameters
- string $content optional null
- the string message to be sent
Returns
current message buffer if $content param is passed as null
cache() public ¶
cache( string $since , string $time = '+1 day' )
Sets the correct headers to instruct the client to cache the response.
Parameters
- string $since
- a valid time since the response text has not been modified
- string $time optional '+1 day'
- a valid time for cache expiry
charset() public ¶
charset( string $charset = null )
Sets the response charset if $charset is null the current charset is returned
Parameters
- string $charset optional null
Returns
current charset
compress() public ¶
compress( )
Sets the correct output buffering handler to send a compressed response. Responses will be compressed with zlib, if the extension is available.
Returns
false if client does not accept compressed responses or no handler is available, true otherwise
disableCache() public ¶
disableCache( )
Sets the correct headers to instruct the client to not cache the response
download() public ¶
download( string $filename )
Sets the correct headers to instruct the browser to download the response as a file.
Parameters
- string $filename
- the name of the file as the browser will download the response
getMimeType() public ¶
getMimeType( string $alias )
Returns the mime type definition for an alias
e.g getMimeType('pdf'); // returns 'application/pdf'
Parameters
- string $alias
- the content type alias to map
Returns
string mapped mime type or false if $alias is not mapped
header() public ¶
header( mixed $header = null , mixed $value = null )
Buffers a header string to be sent Returns the complete list of buffered headers
Single header
e.g header('Location', 'http://example.com');
Multiple headers
e.g header(array('Location' => 'http://example.com', 'X-Extra' => 'My header'));
String header
e.g header('WWW-Authenticate: Negotiate');
Array of string headers
e.g header(array('WWW-Authenticate: Negotiate', 'Content-type: application/pdf'));
Multiple calls for setting the same header name will have the same effect as setting the header once
with the last value sent for it
e.g header('WWW-Authenticate: Negotiate'); header('WWW-Authenticate: Not-Negotiate');
will have the same effect as only doing header('WWW-Authenticate: Not-Negotiate');
Parameters
- mixed $header optional null
$header. An array of header strings or a single header string - an associative array of "header name" => "header value" is also accepted - an array of string headers is also accepted
- mixed $value optional null
- $value. The header value.
Returns
list of headers to be sent
httpCodes() public ¶
httpCodes( mixed $code = null )
Queries & sets valid HTTP response codes & messages.
Parameters
- mixed $code optional null
If $code is an integer, then the corresponding code/message is returned if it exists, null if it does not exist. If $code is an array, then the 'code' and 'message' keys of each nested array are added to the default HTTP codes. Example:
httpCodes(404); // returns array(404 => 'Not Found') httpCodes(array( 701 => 'Unicorn Moved', 800 => 'Unexpected Minotaur' )); // sets these new values, and returns true
Returns
associative array of the HTTP codes as keys, and the message strings as values, or null of the given $code does not exist.
mapType() public ¶
mapType( mixed $ctype )
Maps a content-type back to an alias
e.g mapType('application/pdf'); // returns 'pdf'
Parameters
- mixed $ctype
- Either a string content type to map, or an array of types.
Returns
Aliases for the types provided.
outputCompressed() public ¶
outputCompressed( )
Returns whether the resulting output will be compressed by PHP
Returns
send() public ¶
send( )
Sends the complete response to the client including headers and message body. Will echo out the content in the response body.
statusCode() public ¶
statusCode( integer $code = null )
Sets the HTTP status code to be sent if $code is null the current code is returned
Parameters
- integer $code optional null
Returns
current status code
Throws
type() public ¶
type( string $contentType = null )
Sets the response content type. It can be either a file extension which will be mapped internally to a mime-type or a string representing a mime-type if $contentType is null the current content type is returned if $contentType is an associative array, it will be stored as a content type definition
Setting the content type
e.g type('jpg');
Returning the current content type
e.g type();
Storing a content type definition
e.g type(array('keynote' => 'application/keynote'));
Replacing a content type definition
e.g type(array('jpg' => 'text/plain'));
Parameters
- string $contentType optional null
Returns
current content type or false if supplied an invalid content type
Properties detail
$_contentType ¶
Content type to send. This can be an 'extension' that will be transformed using the $_mimetypes array or a complete mime-type
'text/html'
$_mimeTypes ¶
Holds known mime type mappings
array( 'ai' => 'application/postscript', 'bcpio' => 'application/x-bcpio', 'bin' => 'application/octet-stream', 'ccad' => 'application/clariscad', 'cdf' => 'application/x-netcdf', 'class' => 'application/octet-stream', 'cpio' => 'application/x-cpio', 'cpt' => 'application/mac-compactpro', 'csh' => 'application/x-csh', 'csv' => array('text/csv', 'application/vnd.ms-excel', 'text/plain'), 'dcr' => 'application/x-director', 'dir' => 'application/x-director', 'dms' => 'application/octet-stream', 'doc' => 'application/msword', 'drw' => 'application/drafting', 'dvi' => 'application/x-dvi', 'dwg' => 'application/acad', 'dxf' => 'application/dxf', 'dxr' => 'application/x-director', 'eot' => 'application/vnd.ms-fontobject', 'eps' => 'application/postscript', 'exe' => 'application/octet-stream', 'ez' => 'application/andrew-inset', 'flv' => 'video/x-flv', 'gtar' => 'application/x-gtar', 'gz' => 'application/x-gzip', 'bz2' => 'application/x-bzip', '7z' => 'application/x-7z-compressed', 'hdf' => 'application/x-hdf', 'hqx' => 'application/mac-binhex40', 'ico' => 'image/vnd.microsoft.icon', 'ips' => 'application/x-ipscript', 'ipx' => 'application/x-ipix', 'js' => 'text/javascript', 'latex' => 'application/x-latex', 'lha' => 'application/octet-stream', 'lsp' => 'application/x-lisp', 'lzh' => 'application/octet-stream', 'man' => 'application/x-troff-man', 'me' => 'application/x-troff-me', 'mif' => 'application/vnd.mif', 'ms' => 'application/x-troff-ms', 'nc' => 'application/x-netcdf', 'oda' => 'application/oda', 'otf' => 'font/otf', 'pdf' => 'application/pdf', 'pgn' => 'application/x-chess-pgn', 'pot' => 'application/mspowerpoint', 'pps' => 'application/mspowerpoint', 'ppt' => 'application/mspowerpoint', 'ppz' => 'application/mspowerpoint', 'pre' => 'application/x-freelance', 'prt' => 'application/pro_eng', 'ps' => 'application/postscript', 'roff' => 'application/x-troff', 'scm' => 'application/x-lotusscreencam', 'set' => 'application/set', 'sh' => 'application/x-sh', 'shar' => 'application/x-shar', 'sit' => 'application/x-stuffit', 'skd' => 'application/x-koan', 'skm' => 'application/x-koan', 'skp' => 'application/x-koan', 'skt' => 'application/x-koan', 'smi' => 'application/smil', 'smil' => 'application/smil', 'sol' => 'application/solids', 'spl' => 'application/x-futuresplash', 'src' => 'application/x-wais-source', 'step' => 'application/STEP', 'stl' => 'application/SLA', 'stp' => 'application/STEP', 'sv4cpio' => 'application/x-sv4cpio', 'sv4crc' => 'application/x-sv4crc', 'svg' => 'image/svg+xml', 'svgz' => 'image/svg+xml', 'swf' => 'application/x-shockwave-flash', 't' => 'application/x-troff', 'tar' => 'application/x-tar', 'tcl' => 'application/x-tcl', 'tex' => 'application/x-tex', 'texi' => 'application/x-texinfo', 'texinfo' => 'application/x-texinfo', 'tr' => 'application/x-troff', 'tsp' => 'application/dsptype', 'ttf' => 'font/ttf', 'unv' => 'application/i-deas', 'ustar' => 'application/x-ustar', 'vcd' => 'application/x-cdlink', 'vda' => 'application/vda', 'xlc' => 'application/vnd.ms-excel', 'xll' => 'application/vnd.ms-excel', 'xlm' => 'application/vnd.ms-excel', 'xls' => 'application/vnd.ms-excel', 'xlw' => 'application/vnd.ms-excel', 'zip' => 'application/zip', 'aif' => 'audio/x-aiff', 'aifc' => 'audio/x-aiff', 'aiff' => 'audio/x-aiff', 'au' => 'audio/basic', 'kar' => 'audio/midi', 'mid' => 'audio/midi', 'midi' => 'audio/midi', 'mp2' => 'audio/mpeg', 'mp3' => 'audio/mpeg', 'mpga' => 'audio/mpeg', 'ogg' => 'audio/ogg', 'oga' => 'audio/ogg', 'spx' => 'audio/ogg', 'ra' => 'audio/x-realaudio', 'ram' => 'audio/x-pn-realaudio', 'rm' => 'audio/x-pn-realaudio', 'rpm' => 'audio/x-pn-realaudio-plugin', 'snd' => 'audio/basic', 'tsi' => 'audio/TSP-audio', 'wav' => 'audio/x-wav', 'aac' => 'audio/aac', 'asc' => 'text/plain', 'c' => 'text/plain', 'cc' => 'text/plain', 'css' => 'text/css', 'etx' => 'text/x-setext', 'f' => 'text/plain', 'f90' => 'text/plain', 'h' => 'text/plain', 'hh' => 'text/plain', 'html' => array('text/html', '*/*'), 'htm' => array('text/html', '*/*'), 'm' => 'text/plain', 'rtf' => 'text/rtf', 'rtx' => 'text/richtext', 'sgm' => 'text/sgml', 'sgml' => 'text/sgml', 'tsv' => 'text/tab-separated-values', 'tpl' => 'text/template', 'txt' => 'text/plain', 'text' => 'text/plain', 'xml' => array('application/xml', 'text/xml'), 'avi' => 'video/x-msvideo', 'fli' => 'video/x-fli', 'mov' => 'video/quicktime', 'movie' => 'video/x-sgi-movie', 'mpe' => 'video/mpeg', 'mpeg' => 'video/mpeg', 'mpg' => 'video/mpeg', 'qt' => 'video/quicktime', 'viv' => 'video/vnd.vivo', 'vivo' => 'video/vnd.vivo', 'ogv' => 'video/ogg', 'webm' => 'video/webm', 'mp4' => 'video/mp4', 'gif' => 'image/gif', 'ief' => 'image/ief', 'jpe' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'pbm' => 'image/x-portable-bitmap', 'pgm' => 'image/x-portable-graymap', 'png' => 'image/png', 'pnm' => 'image/x-portable-anymap', 'ppm' => 'image/x-portable-pixmap', 'ras' => 'image/cmu-raster', 'rgb' => 'image/x-rgb', 'tif' => 'image/tiff', 'tiff' => 'image/tiff', 'xbm' => 'image/x-xbitmap', 'xpm' => 'image/x-xpixmap', 'xwd' => 'image/x-xwindowdump', 'ice' => 'x-conference/x-cooltalk', 'iges' => 'model/iges', 'igs' => 'model/iges', 'mesh' => 'model/mesh', 'msh' => 'model/mesh', 'silo' => 'model/mesh', 'vrml' => 'model/vrml', 'wrl' => 'model/vrml', 'mime' => 'www/mime', 'pdb' => 'chemical/x-pdb', 'xyz' => 'chemical/x-pdb', 'javascript' => 'text/javascript', 'json' => 'application/json', 'form' => 'application/x-www-form-urlencoded', 'file' => 'multipart/form-data', 'xhtml' => array('application/xhtml+xml', 'application/xhtml', 'text/xhtml'), 'xhtml-mobile' => 'application/vnd.wap.xhtml+xml', 'rss' => 'application/rss+xml', 'atom' => 'application/atom+xml', 'amf' => 'application/x-amf', 'wap' => array('text/vnd.wap.wml', 'text/vnd.wap.wmlscript', 'image/vnd.wap.wbmp'), 'wml' => 'text/vnd.wap.wml', 'wmlscript' => 'text/vnd.wap.wmlscript', 'wbmp' => 'image/vnd.wap.wbmp', )
$_statusCodes ¶
Holds HTTP response statuses
array( 100 => 'Continue', 101 => 'Switching Protocols', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 307 => 'Temporary Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Time-out', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Large', 415 => 'Unsupported Media Type', 416 => 'Requested range not satisfiable', 417 => 'Expectation Failed', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Time-out' )