A response class intended for test cases.
send( )
Stub the send() method so headers and output are not sent.
Cake\Network\Response::send()
__construct( array $options [] )
Constructor
$options
optional [] __toString( )
String conversion. Fetches the response body as a string. Does not send headers. If body is a callable, a blank string is returned.
string
_clearBuffer( )
Clears the contents of the topmost output buffer and discards them
boolean
_fileRange( Cake\Filesystem\File $file , string $httpRange )
Apply a file range to a file and set the end offset.
If an invalid range is requested a 416 Status code will be used in the response.
Cake\Filesystem\File
$file
$httpRange
_getUTCDate( string|integer|DateTime|null $time null )
Returns a DateTime object initialized at the $time param and using UTC as timezone
$time
optional null DateTime
_isActive( )
Returns true if connection is still active
boolean
_normalizeCorsDomains( array $domains , boolean $requestIsSSL false )
Normalize the origin to regular expressions and put in an array format
$domains
$requestIsSSL
optional false array
_sendContent( string|callable $content )
Sends a content string to the client.
If the content is a callable, it is invoked. The callable should either return a string or output content directly and have no return value.
$content
_sendFile( Cake\Filesystem\File $file , array $range )
Reads out a file, and echos the content to the client.
Cake\Filesystem\File
$file
$range
boolean
_sendHeader( string $name , string|null $value null )
Sends a header to the client.
$name
$value
optional null _setCacheControl( )
Helper method to generate a valid Cache-Control header from the options set in other methods
_setContent( )
Sets the response body to an empty text if the status code is 204 or 304
_setContentType( )
Formats the Content-Type header based on the configured contentType and charset the charset will only be set in the header if the response is of type text/*
_setCookies( )
Sets the cookies that have been added via Cake\Network\Response::cookie() before any other output is sent to the client. Will set the cookies in the order they have been set.
body( string|callable|null $content null )
Buffers the response message to be sent if $content is null the current buffer is returned
$content
optional null string
cache( string $since , string $time '+1 day' )
Sets the correct headers to instruct the client to cache the response.
$since
$time
optional '+1 day' charset( string|null $charset null )
Sets the response charset if $charset is null the current charset is returned
$charset
optional null string
checkNotModified( Cake\Network\Request $request )
Checks whether a response has not been modified according to the 'If-None-Match' (Etags) and 'If-Modified-Since' (last modification date) request headers. If the response is detected to be not modified, it is marked as so accordingly so the client can be informed of that.
In order to mark a response as not modified, you need to set at least the Last-Modified etag response header before calling this method. Otherwise a comparison will not be possible.
Cake\Network\Request
$request
boolean
compress( )
Sets the correct output buffering handler to send a compressed response. Responses will be compressed with zlib, if the extension is available.
boolean
cookie( array|null $options null )
Getter/Setter for cookie configs
This method acts as a setter/getter depending on the type of the argument. If the method is called with no arguments, it returns all configurations.
If the method is called with a string as argument, it returns either the given configuration if it is set, or null, if it's not set.
If the method is called with an array as argument, it will set the cookie configuration to the cookie container.
### Options (when setting a configuration) - name: The Cookie name - value: Value of the cookie - expire: Time the cookie expires in - path: Path the cookie applies to - domain: Domain the cookie is for. - secure: Is the cookie https? - httpOnly: Is the cookie available in the client?
$this->cookie()
$this->cookie('MyCookie')
$this->cookie((array) $options)
$options
optional null mixed
cors( Cake\Network\Request $request , string|array $allowedDomains , string|array $allowedMethods [] , string|array $allowedHeaders [] )
Setup access for origin and methods on cross origin requests
This method allow multiple ways to setup the domains, see the examples
cors($request, 'http://www.cakephp.org');
cors($request, 'http://*.cakephp.org');
cors($request, 'www.cakephp.org');
cors($request, '*');
cors($request, ['http://www.cakephp.org', '*.google.com', 'https://myproject.github.io']);
Cake\Network\Request
$request
$allowedDomains
$allowedMethods
optional [] $allowedHeaders
optional [] disableCache( )
Sets the correct headers to instruct the client to not cache the response
download( string $filename )
Sets the correct headers to instruct the browser to download the response as a file.
$filename
etag( string|null $hash null , boolean $weak false )
Sets the response Etag, Etags are a strong indicative that a response can be cached by a HTTP client. A bad way of generating Etags is creating a hash of the response output, instead generate a unique hash of the unique components that identifies a request, such as a modification time, a resource Id, and anything else you consider it makes it unique.
Second parameter is used to instruct clients that the content has changed, but semantically, it can be used as the same thing. Think for instance of a page with a hit counter, two different page views are equivalent, but they differ by a few bytes. This leaves off to the Client the decision of using or not the cached page.
If no parameters are passed, current Etag header is returned.
$hash
optional null $weak
optional false string|null
expires( string|DateTime|null $time null )
Sets the Expires header for the response by taking an expiration time If called with no parameters it will return the current Expires value
$response->expires('now')
Will Expire the response cache now $response->expires(new DateTime('+1 day'))
Will set the expiration in next 24 hours $response->expires()
Will return the current expiration header value
$time
optional null string|null
file( string $path , array $options [] )
Setup for display or download the given file.
If $_SERVER['HTTP_RANGE'] is set a slice of the file will be returned instead of the entire file.
true
sets download header and forces file to be downloaded rather than displayed in browser$path
APP
will be prepended to the path.$options
optional [] Cake\Network\Exception\NotFoundException
getMimeType( string $alias )
Returns the mime type definition for an alias
e.g getMimeType('pdf'); // returns 'application/pdf'
$alias
mixed
header( string|array|null $header null , string|array|null $value null )
Buffers a header string to be sent Returns the complete list of buffered headers
header('Location', 'http://example.com');
header(['Location' => 'http://example.com', 'X-Extra' => 'My header']);
header('WWW-Authenticate: Negotiate');
header(['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
header('WWW-Authenticate: Negotiate'); header('WWW-Authenticate: Not-Negotiate');
will have the same effect as only doing
header('WWW-Authenticate: Not-Negotiate');
$header
optional null $value
optional null array
httpCodes( integer|array|null $code null )
Queries & sets valid HTTP response codes & messages.
$code
optional null mixed
InvalidArgumentException
length( integer|null $bytes null )
Sets the Content-Length header for the response If called with no arguments returns the last Content-Length set
$bytes
optional null integer|null
location( null|string $url null )
Accessor for the location header.
Get/Set the Location header value.
$url
optional null string|null
mapType( string|array $ctype )
Maps a content-type back to an alias
e.g mapType('application/pdf'); // returns 'pdf'
$ctype
string|array|null
maxAge( integer|null $seconds null )
Sets the Cache-Control max-age directive. The max-age is the number of seconds after which the response should no longer be considered a good candidate to be fetched from the local (client) cache. If called with no parameters, this function will return the current max-age value if any
$seconds
optional null integer|null
modified( string|DateTime|null $time null )
Sets the Last-Modified header for the response by taking a modification time If called with no parameters it will return the current Last-Modified value
$response->modified('now')
Will set the Last-Modified to the current time $response->modified(new DateTime('+1 day'))
Will set the modification date in the past 24 hours $response->modified()
Will return the current Last-Modified header value
$time
optional null string|null
mustRevalidate( boolean|null $enable null )
Sets the Cache-Control must-revalidate directive. must-revalidate indicates that the response should not be served stale by a cache under any circumstance without first revalidating with the origin. If called with no parameters, this function will return whether must-revalidate is present.
$enable
optional null boolean
notModified( )
Sets the response as Not Modified by removing any body contents setting the status code to "304 Not Modified" and removing all conflicting headers
outputCompressed( )
Returns whether the resulting output will be compressed by PHP
boolean
protocol( string|null $protocol null )
Sets the protocol to be used when sending the response. Defaults to HTTP/1.1 If called with no arguments, it will return the current configured protocol
$protocol
optional null string
sharable( boolean|null $public null , integer|null $time null )
Sets whether a response is eligible to be cached by intermediate proxies This method controls the public
or private
directive in the Cache-Control header
$public
optional null $time
optional null boolean|null
sharedMaxAge( integer|null $seconds null )
Sets the Cache-Control s-maxage directive. The max-age is the number of seconds after which the response should no longer be considered a good candidate to be fetched from a shared cache (like in a proxy server). If called with no parameters, this function will return the current max-age value if any
$seconds
optional null integer|null
statusCode( integer|null $code null )
Sets the HTTP status code to be sent if $code is null the current code is returned
$code
optional null integer
InvalidArgumentException
stop( integer|string $status 0 )
Stop execution of the current script. Wraps exit() making testing easier.
$status
optional 0 type( string|null $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, content type definitions will be stored/replaced
type('jpg');
type();
type(['keynote' => 'application/keynote', 'bat' => 'application/bat']);
type(['jpg' => 'text/plain']);
$contentType
optional null mixed
vary( string|array|null $cacheVariances null )
Sets the Vary header for the response, if an array is passed, values will be imploded into a comma separated string. If no parameters are passed, then an array with the current Vary header value is returned
$cacheVariances
optional null array|null
protected array
Holds all the cache directives that will be converted into headers when sending the request
[]
protected integer
Content type to send. This can be an 'extension' that will be transformed using the $_mimetypes array or a complete mime-type
'text/html'
protected array
Holds type key to mime type mappings for known mime types.
[ 'html' => ['text/html', '*/*'], 'json' => 'application/json', 'xml' => ['application/xml', 'text/xml'], 'rss' => 'application/rss+xml', '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' => ['text/csv', 'application/vnd.ms-excel'], 'dcr' => 'application/x-director', 'dir' => 'application/x-director', 'dms' => 'application/octet-stream', 'doc' => 'application/msword', 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', '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/x-icon', 'ips' => 'application/x-ipscript', 'ipx' => 'application/x-ipix', 'js' => 'application/javascript', 'jsonapi' => 'application/vnd.api+json', '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/vnd.ms-powerpoint', 'pps' => 'application/vnd.ms-powerpoint', 'ppt' => 'application/vnd.ms-powerpoint', 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'ppz' => 'application/vnd.ms-powerpoint', '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', 'ttc' => 'font/ttf', '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', 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', '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', 'htm' => ['text/html', '*/*'], 'ics' => 'text/calendar', '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', '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', 'm4v' => 'video/mp4', 'f4v' => 'video/mp4', 'f4p' => 'video/mp4', 'm4a' => 'audio/mp4', 'f4a' => 'audio/mp4', 'f4b' => 'audio/mp4', 'gif' => 'image/gif', 'ief' => 'image/ief', 'jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'jpe' => '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' => 'application/javascript', 'form' => 'application/x-www-form-urlencoded', 'file' => 'multipart/form-data', 'xhtml' => ['application/xhtml+xml', 'application/xhtml', 'text/xhtml'], 'xhtml-mobile' => 'application/vnd.wap.xhtml+xml', 'atom' => 'application/atom+xml', 'amf' => 'application/x-amf', 'wap' => ['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', 'woff' => 'application/x-font-woff', 'webp' => 'image/webp', 'appcache' => 'text/cache-manifest', 'manifest' => 'text/cache-manifest', 'htc' => 'text/x-component', 'rdf' => 'application/xml', 'crx' => 'application/x-chrome-extension', 'oex' => 'application/x-opera-extension', 'xpi' => 'application/x-xpinstall', 'safariextz' => 'application/octet-stream', 'webapp' => 'application/x-web-app-manifest+json', 'vcf' => 'text/x-vcard', 'vtt' => 'text/vtt', 'mkv' => 'video/x-matroska', 'pkpass' => 'application/vnd.apple.pkpass', 'ajax' => 'text/html' ]
protected array
Holds HTTP response statuses
[ 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', 429 => 'Too Many Requests', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Time-out', 505 => 'Unsupported Version' ]
© 2005–2016 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
http://api.cakephp.org/3.1/class-Cake.TestSuite.Stub.Response.html