a961342935b07a86aa39565ad2ae9e43c41e6a02
[yaffs-website] / vendor / zendframework / zend-diactoros / src / Response / SapiEmitter.php
1 <?php
2 /**
3  * Zend Framework (http://framework.zend.com/)
4  *
5  * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
6  * @copyright Copyright (c) 2015-2016 Zend Technologies USA Inc. (http://www.zend.com)
7  * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
8  */
9
10 namespace Zend\Diactoros\Response;
11
12 use Psr\Http\Message\ResponseInterface;
13 use RuntimeException;
14
15 class SapiEmitter implements EmitterInterface
16 {
17     use SapiEmitterTrait;
18
19     /**
20      * Emits a response for a PHP SAPI environment.
21      *
22      * Emits the status line and headers via the header() function, and the
23      * body content via the output buffer.
24      *
25      * @param ResponseInterface $response
26      * @param null|int $maxBufferLevel Maximum output buffering level to unwrap.
27      */
28     public function emit(ResponseInterface $response, $maxBufferLevel = null)
29     {
30         if (headers_sent()) {
31             throw new RuntimeException('Unable to emit response; headers already sent');
32         }
33
34         $response = $this->injectContentLength($response);
35
36         $this->emitStatusLine($response);
37         $this->emitHeaders($response);
38         $this->flush($maxBufferLevel);
39         $this->emitBody($response);
40     }
41
42     /**
43      * Emit the message body.
44      *
45      * @param ResponseInterface $response
46      */
47     private function emitBody(ResponseInterface $response)
48     {
49         echo $response->getBody();
50     }
51 }