diff --git a/src/Server.php b/src/Server.php new file mode 100644 index 0000000000000000000000000000000000000000..0bc3832e998afb44af5dcc240ad8dde3e7e04680 --- /dev/null +++ b/src/Server.php @@ -0,0 +1,40 @@ +<?php + +namespace Tal; + +/** + * Class Server + * + * This class is a stupid wrapper for php functions for testing. + * + * @package Tal + * @author Thomas Flori <thflori@gmail.com> + * @codeCoverageIgnore trivial + */ +class Server +{ + /** + * Send a raw HTTP header + * + * @link http://php.net/manual/en/function.header.php + * @param string $string The header string + * @param bool $replace + * @param int $responseCode + * @return void + */ + public function header($string, $replace = true, $responseCode = null) + { + header($string, $replace, $responseCode); + } + + /** + * Echos the given $string + * + * @param $string + * @return void + */ + public function echo($string) + { + echo($string); + } +} diff --git a/src/ServerResponse.php b/src/ServerResponse.php index 0310d4685caf0425d8675b455d4fe3df2fd812b1..94b03cad55d3875fc835daaa3026bf0ab2355b93 100644 --- a/src/ServerResponse.php +++ b/src/ServerResponse.php @@ -17,16 +17,19 @@ class ServerResponse extends Response implements ServerResponseInterface /** * Sends this response to the client. * + * @param int $bufferSize + * @param Server|null $server * @return static */ - public function send(int $bufferSize = 8192) + public function send(int $bufferSize = 8192, Server $server = null) { + $server = $server ?? new Server(); foreach ($this->getHeaders() as $name => $values) { if (strtolower($name) !== 'set-cookie') { - header(sprintf('%s: %s', $name, implode(',', $values)), false); + $server->header(sprintf('%s: %s', $name, implode(',', $values)), false); } else { foreach ($values as $value) { - header(sprintf('%s: %s', $name, $value), false); + $server->header(sprintf('%s: %s', $name, $value), false); } } } @@ -37,14 +40,14 @@ class ServerResponse extends Response implements ServerResponseInterface $this->getStatusCode(), $this->getReasonPhrase() ); - header($http_line, true, $this->getStatusCode()); + $server->header($http_line, true, $this->getStatusCode()); $stream = $this->getBody(); if ($stream->isSeekable()) { $stream->rewind(); } while (!$stream->eof()) { - echo $stream->read($bufferSize); + $server->echo($stream->read($bufferSize)); } return $this; }