diff --git a/.gitignore b/.gitignore index c8153b578263d52537c55d921652bc7d7019e3c9..8f7045c9c72fea7582150e7327822ebbfa9524ad 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /composer.lock /vendor/ +/.phpunit.result.cache diff --git a/composer.json b/composer.json index eed8fa3f02e16b5b39bb666b5794e29877af2e68..664a226237c0333ff5235c315a3432847ffa6e65 100644 --- a/composer.json +++ b/composer.json @@ -10,8 +10,7 @@ "coverage": "phpunit --stderr --coverage-text" }, "require": { - "guzzlehttp/psr7": "^2.6.1", - "ralouphie/getallheaders": "^2.0.5" + "guzzlehttp/psr7": "^2.6.1" }, "require-dev": { "phpunit/phpunit": "*", diff --git a/src/MessageTrait.php b/src/MessageTrait.php index 513154b8d92e51cab543898bdf82bf4e5f74a072..b9a784df4897c1398fb9c77fc7593871a35a58f3 100644 --- a/src/MessageTrait.php +++ b/src/MessageTrait.php @@ -2,6 +2,8 @@ namespace Tal; +use GuzzleHttp\Psr7\Utils; +use Psr\Http\Message\MessageInterface; use function GuzzleHttp\Psr7\stream_for; use Psr\Http\Message\StreamInterface; @@ -22,12 +24,12 @@ trait MessageTrait /** @var StreamInterface */ protected $stream; - public function getProtocolVersion() + public function getProtocolVersion(): string { return $this->protocol; } - public function withProtocolVersion($version) + public function withProtocolVersion($version): MessageInterface { if ($this->protocol === $version) { return $this; @@ -37,17 +39,17 @@ trait MessageTrait return $new->setProtocolVersion($version); } - public function getHeaders() + public function getHeaders(): array { return $this->headers; } - public function hasHeader($header) + public function hasHeader($header): bool { return isset($this->headerNames[strtolower($header)]); } - public function getHeader($header) + public function getHeader($header): array { $header = strtolower($header); @@ -60,24 +62,24 @@ trait MessageTrait return $this->headers[$header]; } - public function getHeaderLine($header) + public function getHeaderLine($header): string { return implode(', ', $this->getHeader($header)); } - public function withHeader($header, $value) + public function withHeader($header, $value): MessageInterface { $new = clone $this; return $new->setHeader($header, $value); } - public function withAddedHeader($header, $value) + public function withAddedHeader($header, $value): MessageInterface { $new = clone $this; return $new->addHeader($header, $value); } - public function withoutHeader($header) + public function withoutHeader($header): MessageInterface { $normalized = strtolower($header); @@ -89,16 +91,16 @@ trait MessageTrait return $new->deleteHeader($header); } - public function getBody() + public function getBody(): StreamInterface { if (!$this->stream) { - $this->stream = stream_for(''); + $this->stream = Utils::streamFor(''); } return $this->stream; } - public function withBody(StreamInterface $body) + public function withBody(StreamInterface $body): MessageInterface { if ($body === $this->stream) { return $this; diff --git a/src/Request.php b/src/Request.php index a2ba4893a9dc8dd134943c92011dc763dcff0b0c..f91a61f8d2bd280972ae9c00a6c9883ce7c2a7cc 100644 --- a/src/Request.php +++ b/src/Request.php @@ -2,6 +2,7 @@ namespace Tal; +use GuzzleHttp\Psr7\Utils; use function GuzzleHttp\Psr7\stream_for; use GuzzleHttp\Psr7\Uri; use InvalidArgumentException; @@ -53,11 +54,11 @@ abstract class Request implements RequestInterface } if ($body !== '' && $body !== null) { - $this->stream = stream_for($body); + $this->stream = Utils::streamFor($body); } } - public function getRequestTarget() + public function getRequestTarget(): string { if ($this->requestTarget !== null) { return $this->requestTarget; @@ -74,29 +75,29 @@ abstract class Request implements RequestInterface return $target; } - public function withRequestTarget($requestTarget) + public function withRequestTarget(string $requestTarget): RequestInterface { $new = clone $this; return $new->setRequestTarget($requestTarget); } - public function getMethod() + public function getMethod(): string { return $this->method; } - public function withMethod($method) + public function withMethod(string $method): RequestInterface { $new = clone $this; return $new->setMethod($method); } - public function getUri() + public function getUri(): UriInterface { return $this->uri; } - public function withUri(UriInterface $uri, $preserveHost = false) + public function withUri(UriInterface $uri, bool $preserveHost = false): RequestInterface { if ($uri === $this->uri) { return $this; diff --git a/src/Response.php b/src/Response.php index 20b8ff418794081aaca5dd10224905f04df54e7b..96e9f4469f860bf7d513cf976b438e2f522c2123 100644 --- a/src/Response.php +++ b/src/Response.php @@ -2,6 +2,7 @@ namespace Tal; +use GuzzleHttp\Psr7\Utils; use function GuzzleHttp\Psr7\stream_for; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\StreamInterface; @@ -98,7 +99,7 @@ abstract class Response implements ResponseInterface $this->statusCode = (int) $status; if ($body !== '' && $body !== null) { - $this->stream = stream_for($body); + $this->stream = Utils::streamFor($body); } $this->setHeaders($headers); @@ -111,17 +112,17 @@ abstract class Response implements ResponseInterface $this->protocol = $version; } - public function getStatusCode() + public function getStatusCode(): int { return $this->statusCode; } - public function getReasonPhrase() + public function getReasonPhrase(): string { return $this->reasonPhrase; } - public function withStatus($code, $reasonPhrase = '') + public function withStatus(int $code, string $reasonPhrase = ''): ResponseInterface { $new = clone $this; return $new->setStatus($code, $reasonPhrase); diff --git a/src/ServerRequest.php b/src/ServerRequest.php index 5d1ccc318970452e8824fa6ff08857397d914eef..c9bd025a6d2bcebccbebcc321e40c293758dbb45 100644 --- a/src/ServerRequest.php +++ b/src/ServerRequest.php @@ -7,6 +7,8 @@ use GuzzleHttp\Psr7\LazyOpenStream; use GuzzleHttp\Psr7\UploadedFile; use GuzzleHttp\Psr7\Uri; use InvalidArgumentException; +use Psr\Http\Message\RequestInterface; +use Psr\Http\Message\ServerRequestInterface as PsrServerRequestInterface; use Psr\Http\Message\UriInterface; use Psr\Http\Message\StreamInterface; use Psr\Http\Message\UploadedFileInterface; @@ -234,7 +236,7 @@ class ServerRequest extends Request implements ServerRequestInterface /** * {@inheritdoc} */ - public function getServerParams() + public function getServerParams(): array { return $this->serverParams; } @@ -242,7 +244,7 @@ class ServerRequest extends Request implements ServerRequestInterface /** * {@inheritdoc} */ - public function getUploadedFiles() + public function getUploadedFiles(): array { return $this->uploadedFiles; } @@ -250,7 +252,7 @@ class ServerRequest extends Request implements ServerRequestInterface /** * {@inheritdoc} */ - public function withUploadedFiles(array $uploadedFiles) + public function withUploadedFiles(array $uploadedFiles): PsrServerRequestInterface { $new = clone $this; $new->uploadedFiles = $uploadedFiles; @@ -261,7 +263,7 @@ class ServerRequest extends Request implements ServerRequestInterface /** * {@inheritdoc} */ - public function getCookieParams() + public function getCookieParams(): array { return $this->cookieParams; } @@ -269,7 +271,7 @@ class ServerRequest extends Request implements ServerRequestInterface /** * {@inheritdoc} */ - public function withCookieParams(array $cookies) + public function withCookieParams(array $cookies): PsrServerRequestInterface { $new = clone $this; $new->cookieParams = $cookies; @@ -280,7 +282,7 @@ class ServerRequest extends Request implements ServerRequestInterface /** * {@inheritdoc} */ - public function getQueryParams() + public function getQueryParams(): array { return $this->queryParams; } @@ -288,7 +290,7 @@ class ServerRequest extends Request implements ServerRequestInterface /** * {@inheritdoc} */ - public function withQueryParams(array $query) + public function withQueryParams(array $query): PsrServerRequestInterface { $new = clone $this; $new->queryParams = $query; @@ -307,7 +309,7 @@ class ServerRequest extends Request implements ServerRequestInterface /** * {@inheritdoc} */ - public function withParsedBody($data) + public function withParsedBody($data): PsrServerRequestInterface { $new = clone $this; $new->parsedBody = $data; @@ -318,7 +320,7 @@ class ServerRequest extends Request implements ServerRequestInterface /** * {@inheritdoc} */ - public function getAttributes() + public function getAttributes(): array { return $this->attributes; } @@ -326,7 +328,7 @@ class ServerRequest extends Request implements ServerRequestInterface /** * {@inheritdoc} */ - public function getAttribute($attribute, $default = null) + public function getAttribute(string $attribute, $default = null) { if (false === array_key_exists($attribute, $this->attributes)) { return $default; @@ -338,7 +340,7 @@ class ServerRequest extends Request implements ServerRequestInterface /** * {@inheritdoc} */ - public function withAttribute($attribute, $value) + public function withAttribute(string $attribute, $value): PsrServerRequestInterface { $new = clone $this; $new->attributes[$attribute] = $value; @@ -349,7 +351,7 @@ class ServerRequest extends Request implements ServerRequestInterface /** * {@inheritdoc} */ - public function withoutAttribute($attribute) + public function withoutAttribute(string $attribute): PsrServerRequestInterface { if (false === array_key_exists($attribute, $this->attributes)) { return $this; diff --git a/tests/ClientRequestTest.php b/tests/ClientRequestTest.php index c35d1bae508824eca33f6e9f8d4c773c07466a06..07c74e11db4c6df93dba3fcc6ab4debba44c36a5 100644 --- a/tests/ClientRequestTest.php +++ b/tests/ClientRequestTest.php @@ -22,11 +22,9 @@ class RequestTest extends TestCase $this->assertSame($uri, $r->getUri()); } - /** - * @expectedException \InvalidArgumentException - */ public function testValidateRequestUri() { + $this->expectException(\InvalidArgumentException::class); new Request('GET', '///'); } @@ -54,7 +52,7 @@ class RequestTest extends TestCase public function testConstructorDoesNotReadStreamBody() { $streamIsRead = false; - $body = Psr7\FnStream::decorate(Psr7\stream_for(''), [ + $body = Psr7\FnStream::decorate(Psr7\Utils::streamFor(''), [ '__toString' => function () use (&$streamIsRead) { $streamIsRead = true; return ''; @@ -104,11 +102,9 @@ class RequestTest extends TestCase $this->assertEquals('/', $r1->getRequestTarget()); } - /** - * @expectedException \InvalidArgumentException - */ public function testRequestTargetDoesNotAllowSpaces() { + $this->expectException(\InvalidArgumentException::class); $r1 = new Request('GET', '/'); $r1->withRequestTarget('/foo bar'); } diff --git a/tests/ClientResponseTest.php b/tests/ClientResponseTest.php index 7b89db49860c686814ebdb6b7922917407d8b265..936ff72da631ddd4922ec88ee1a1a9beabf77465 100644 --- a/tests/ClientResponseTest.php +++ b/tests/ClientResponseTest.php @@ -29,7 +29,7 @@ class ClientResponseTest extends TestCase public function testConstructorDoesNotReadStreamBody() { $streamIsRead = false; - $body = Psr7\FnStream::decorate(Psr7\stream_for(''), [ + $body = Psr7\FnStream::decorate(Psr7\Utils::streamFor(''), [ '__toString' => function () use (&$streamIsRead) { $streamIsRead = true; return ''; @@ -137,7 +137,7 @@ class ClientResponseTest extends TestCase public function testWithBody() { - $b = Psr7\stream_for('0'); + $b = Psr7\Utils::streamFor('0'); $r = (new Response())->withBody($b); $this->assertInstanceOf('Psr\Http\Message\StreamInterface', $r->getBody()); $this->assertSame('0', (string) $r->getBody()); diff --git a/tests/ServerResponseTest.php b/tests/ServerResponseTest.php index 2092873f3bde7be055eb4f31260adbfc8827e939..e2a4e05ed587eb5c6b9931ace9834721b61fd23e 100644 --- a/tests/ServerResponseTest.php +++ b/tests/ServerResponseTest.php @@ -16,7 +16,7 @@ class ServerResponseTest extends MockeryTestCase /** * @inheritDoc */ - protected function setUp() + protected function setUp(): void { $this->server = m::mock(Server::class); $this->server->shouldReceive('header')->byDefault();