Mercurial > hg > isophonics-drupal-site
view vendor/zendframework/zend-diactoros/src/Response/SapiEmitterTrait.php @ 9:1fc0ff908d1f
Add another data file
author | Chris Cannam |
---|---|
date | Mon, 05 Feb 2018 12:34:32 +0000 |
parents | 4c8ae668cc8c |
children | 7a779792577d |
line wrap: on
line source
<?php /** * Zend Framework (http://framework.zend.com/) * * @see http://github.com/zendframework/zend-diactoros for the canonical source repository * @copyright Copyright (c) 2015-2016 Zend Technologies USA Inc. (http://www.zend.com) * @license https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License */ namespace Zend\Diactoros\Response; use Psr\Http\Message\ResponseInterface; trait SapiEmitterTrait { /** * Inject the Content-Length header if is not already present. * * @param ResponseInterface $response * @return ResponseInterface */ private function injectContentLength(ResponseInterface $response) { if (! $response->hasHeader('Content-Length')) { // PSR-7 indicates int OR null for the stream size; for null values, // we will not auto-inject the Content-Length. if (null !== $response->getBody()->getSize()) { return $response->withHeader('Content-Length', (string) $response->getBody()->getSize()); } } return $response; } /** * Emit the status line. * * Emits the status line using the protocol version and status code from * the response; if a reason phrase is available, it, too, is emitted. * * @param ResponseInterface $response */ private function emitStatusLine(ResponseInterface $response) { $reasonPhrase = $response->getReasonPhrase(); header(sprintf( 'HTTP/%s %d%s', $response->getProtocolVersion(), $response->getStatusCode(), ($reasonPhrase ? ' ' . $reasonPhrase : '') )); } /** * Emit response headers. * * Loops through each header, emitting each; if the header value * is an array with multiple values, ensures that each is sent * in such a way as to create aggregate headers (instead of replace * the previous). * * @param ResponseInterface $response */ private function emitHeaders(ResponseInterface $response) { foreach ($response->getHeaders() as $header => $values) { $name = $this->filterHeader($header); $first = $name === 'Set-Cookie' ? false : true; foreach ($values as $value) { header(sprintf( '%s: %s', $name, $value ), $first); $first = false; } } } /** * Loops through the output buffer, flushing each, before emitting * the response. * * @param int|null $maxBufferLevel Flush up to this buffer level. */ private function flush($maxBufferLevel = null) { if (null === $maxBufferLevel) { $maxBufferLevel = ob_get_level(); } while (ob_get_level() > $maxBufferLevel) { ob_end_flush(); } } /** * Filter a header name to wordcase * * @param string $header * @return string */ private function filterHeader($header) { $filtered = str_replace('-', ' ', $header); $filtered = ucwords($filtered); return str_replace(' ', '-', $filtered); } }