From 9d1807d66d2702f702a7c79b51c123e3505986b9 Mon Sep 17 00:00:00 2001 From: Dennis Riehle Date: Mon, 12 Oct 2020 12:58:19 +0200 Subject: [PATCH 1/3] migrated to laminas/laminas-diactoros (#125) --- composer.json | 6 +++--- puli.json | 10 +++++----- spec/StreamFactory/DiactorosStreamFactorySpec.php | 2 +- src/MessageFactory/DiactorosMessageFactory.php | 4 ++-- src/StreamFactory/DiactorosStreamFactory.php | 2 +- src/UriFactory/DiactorosUriFactory.php | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/composer.json b/composer.json index ef50ea3..fc67cd0 100644 --- a/composer.json +++ b/composer.json @@ -29,13 +29,13 @@ "guzzlehttp/psr7": "^1.0", "phpspec/phpspec": "^5.1 || ^6.3", "slim/slim": "^3.0", - "zendframework/zend-diactoros": "^1.0" + "laminas/laminas-diactoros": "^2.0" }, "suggest": { "ext-zlib": "Used with compressor/decompressor streams", "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", - "slim/slim": "Used with Slim Framework PSR-7 implementation", - "zendframework/zend-diactoros": "Used with Diactoros Factories" + "laminas/laminas-diactoros": "Used with Diactoros Factories", + "slim/slim": "Used with Slim Framework PSR-7 implementation" }, "config": { "sort-packages": true diff --git a/puli.json b/puli.json index 024a85d..e1b970b 100644 --- a/puli.json +++ b/puli.json @@ -7,7 +7,7 @@ "class": "Http\\Message\\MessageFactory\\DiactorosMessageFactory", "type": "Http\\Message\\MessageFactory", "parameters": { - "depends": "Zend\\Diactoros\\Request" + "depends": "Laminas\\Diactoros\\Request" } }, "0836751e-6558-4d1b-8993-4a52012947c3": { @@ -57,7 +57,7 @@ "class": "Http\\Message\\UriFactory\\DiactorosUriFactory", "type": "Http\\Message\\UriFactory", "parameters": { - "depends": "Zend\\Diactoros\\Uri" + "depends": "Laminas\\Diactoros\\Uri" } }, "4672a6ee-ad9e-4109-a5d1-b7d46f26c7a1": { @@ -70,7 +70,7 @@ "class": "Http\\Message\\MessageFactory\\DiactorosMessageFactory", "type": "Http\\Message\\ResponseFactory", "parameters": { - "depends": "Zend\\Diactoros\\Response" + "depends": "Laminas\\Diactoros\\Response" } }, "6a9ad6ce-d82c-470f-8e30-60f21d9d95bf": { @@ -88,7 +88,7 @@ "class": "Http\\Message\\StreamFactory\\DiactorosStreamFactory", "type": "Http\\Message\\StreamFactory", "parameters": { - "depends": "Zend\\Diactoros\\Stream" + "depends": "Laminas\\Diactoros\\Stream" } }, "a018af27-7590-4dcf-83a1-497f95604cd6": { @@ -104,7 +104,7 @@ "class": "Http\\Message\\MessageFactory\\DiactorosMessageFactory", "type": "Http\\Message\\RequestFactory", "parameters": { - "depends": "Zend\\Diactoros\\Request" + "depends": "Laminas\\Diactoros\\Request" } } } diff --git a/spec/StreamFactory/DiactorosStreamFactorySpec.php b/spec/StreamFactory/DiactorosStreamFactorySpec.php index 372ef1b..dbf6927 100644 --- a/spec/StreamFactory/DiactorosStreamFactorySpec.php +++ b/spec/StreamFactory/DiactorosStreamFactorySpec.php @@ -2,7 +2,7 @@ namespace spec\Http\Message\StreamFactory; -use Zend\Diactoros\Stream; +use Laminas\Diactoros\Stream; use PhpSpec\ObjectBehavior; class DiactorosStreamFactorySpec extends ObjectBehavior diff --git a/src/MessageFactory/DiactorosMessageFactory.php b/src/MessageFactory/DiactorosMessageFactory.php index 94b9ad2..4e81d4d 100644 --- a/src/MessageFactory/DiactorosMessageFactory.php +++ b/src/MessageFactory/DiactorosMessageFactory.php @@ -4,8 +4,8 @@ use Http\Message\MessageFactory; use Http\Message\StreamFactory\DiactorosStreamFactory; -use Zend\Diactoros\Request; -use Zend\Diactoros\Response; +use Laminas\Diactoros\Request; +use Laminas\Diactoros\Response; /** * Creates Diactoros messages. diff --git a/src/StreamFactory/DiactorosStreamFactory.php b/src/StreamFactory/DiactorosStreamFactory.php index 95bf0ca..2ee303e 100644 --- a/src/StreamFactory/DiactorosStreamFactory.php +++ b/src/StreamFactory/DiactorosStreamFactory.php @@ -3,8 +3,8 @@ namespace Http\Message\StreamFactory; use Http\Message\StreamFactory; +use Laminas\Diactoros\Stream; use Psr\Http\Message\StreamInterface; -use Zend\Diactoros\Stream; /** * Creates Diactoros streams. diff --git a/src/UriFactory/DiactorosUriFactory.php b/src/UriFactory/DiactorosUriFactory.php index f3b73d0..6d22ba1 100644 --- a/src/UriFactory/DiactorosUriFactory.php +++ b/src/UriFactory/DiactorosUriFactory.php @@ -3,8 +3,8 @@ namespace Http\Message\UriFactory; use Http\Message\UriFactory; +use Laminas\Diactoros\Uri; use Psr\Http\Message\UriInterface; -use Zend\Diactoros\Uri; /** * Creates Diactoros URI. From 2d02b258a4345f436ba8e6a865414bcfbe682971 Mon Sep 17 00:00:00 2001 From: Dennis Riehle Date: Mon, 12 Oct 2020 13:49:28 +0200 Subject: [PATCH 2/3] check for both Laminas and Zend classes in factories, updated changelog (#125) --- CHANGELOG.md | 11 ++++++++ .../DiactorosMessageFactory.php | 27 ++++++++++++++++--- src/StreamFactory/DiactorosStreamFactory.php | 16 ++++++++--- src/UriFactory/DiactorosUriFactory.php | 9 +++++-- 4 files changed, 54 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bcd66d6..0bbcd06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,17 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [Unreleased] + +- Migrated from `zendframework/zend-diactoros` to `laminas/laminas-diactoros`. + Users are encouraged to update their dependencies by simply replacing the Zend package with the Laminas package. + Due to the [laminas-zendframework-brige](https://github.com/laminas/laminas-zendframework-bridge), BC changes + are not expected and legacy code does not need to be refactored (though it is + [recommended and simple](https://docs.laminas.dev/migration/)). +- The diactoros factories of `php-http/message` will return objects from the `Laminas\Diactoros\` namespace, if + the respective classes are available via autoloading, but continue to return objects from `Zend\Diactoros\` + namespace otherwise. + ## [1.10.0] - 2020-11-11 - Added support for PHP 8.0. diff --git a/src/MessageFactory/DiactorosMessageFactory.php b/src/MessageFactory/DiactorosMessageFactory.php index 4e81d4d..6d54d35 100644 --- a/src/MessageFactory/DiactorosMessageFactory.php +++ b/src/MessageFactory/DiactorosMessageFactory.php @@ -4,8 +4,10 @@ use Http\Message\MessageFactory; use Http\Message\StreamFactory\DiactorosStreamFactory; -use Laminas\Diactoros\Request; -use Laminas\Diactoros\Response; +use Laminas\Diactoros\Request as LaminasRequest; +use Laminas\Diactoros\Response as LaminasResponse; +use Zend\Diactoros\Request as ZendRequest; +use Zend\Diactoros\Response as ZendResponse; /** * Creates Diactoros messages. @@ -36,7 +38,16 @@ public function createRequest( $body = null, $protocolVersion = '1.1' ) { - return (new Request( + if (class_exists(LaminasRequest::class)) { + return (new LaminasRequest( + $uri, + $method, + $this->streamFactory->createStream($body), + $headers + ))->withProtocolVersion($protocolVersion); + } + + return (new ZendRequest( $uri, $method, $this->streamFactory->createStream($body), @@ -54,7 +65,15 @@ public function createResponse( $body = null, $protocolVersion = '1.1' ) { - return (new Response( + if (class_exists(LaminasResponse::class)) { + return (new LaminasResponse( + $this->streamFactory->createStream($body), + $statusCode, + $headers + ))->withProtocolVersion($protocolVersion); + } + + return (new ZendResponse( $this->streamFactory->createStream($body), $statusCode, $headers diff --git a/src/StreamFactory/DiactorosStreamFactory.php b/src/StreamFactory/DiactorosStreamFactory.php index 2ee303e..8ae2b28 100644 --- a/src/StreamFactory/DiactorosStreamFactory.php +++ b/src/StreamFactory/DiactorosStreamFactory.php @@ -3,8 +3,9 @@ namespace Http\Message\StreamFactory; use Http\Message\StreamFactory; -use Laminas\Diactoros\Stream; +use Laminas\Diactoros\Stream as LaminasStream; use Psr\Http\Message\StreamInterface; +use Zend\Diactoros\Stream as ZendStream; /** * Creates Diactoros streams. @@ -25,10 +26,19 @@ public function createStream($body = null) } if (is_resource($body)) { - return new Stream($body); + if (class_exists(LaminasStream::class)) { + return new LaminasStream($body); + } + + return new ZendStream($body); + } + + if (class_exists(LaminasStream::class)) { + $stream = new LaminasStream('php://memory', 'rw'); + } else { + $stream = new ZendStream('php://memory', 'rw'); } - $stream = new Stream('php://memory', 'rw'); if (null !== $body && '' !== $body) { $stream->write((string) $body); } diff --git a/src/UriFactory/DiactorosUriFactory.php b/src/UriFactory/DiactorosUriFactory.php index 6d22ba1..be883de 100644 --- a/src/UriFactory/DiactorosUriFactory.php +++ b/src/UriFactory/DiactorosUriFactory.php @@ -3,8 +3,9 @@ namespace Http\Message\UriFactory; use Http\Message\UriFactory; -use Laminas\Diactoros\Uri; +use Laminas\Diactoros\Uri as LaminasUri; use Psr\Http\Message\UriInterface; +use Zend\Diactoros\Uri as ZendUri; /** * Creates Diactoros URI. @@ -23,7 +24,11 @@ public function createUri($uri) if ($uri instanceof UriInterface) { return $uri; } elseif (is_string($uri)) { - return new Uri($uri); + if (class_exists(LaminasUri::class)) { + return new LaminasUri($uri); + } + + return new ZendUri($uri); } throw new \InvalidArgumentException('URI must be a string or UriInterface'); From ab0117e8149f7bf2df988901476d270f15366b1e Mon Sep 17 00:00:00 2001 From: Dennis Riehle Date: Wed, 2 Dec 2020 18:43:40 +0100 Subject: [PATCH 3/3] keep puli at legacy classes (#134) --- puli.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/puli.json b/puli.json index e1b970b..024a85d 100644 --- a/puli.json +++ b/puli.json @@ -7,7 +7,7 @@ "class": "Http\\Message\\MessageFactory\\DiactorosMessageFactory", "type": "Http\\Message\\MessageFactory", "parameters": { - "depends": "Laminas\\Diactoros\\Request" + "depends": "Zend\\Diactoros\\Request" } }, "0836751e-6558-4d1b-8993-4a52012947c3": { @@ -57,7 +57,7 @@ "class": "Http\\Message\\UriFactory\\DiactorosUriFactory", "type": "Http\\Message\\UriFactory", "parameters": { - "depends": "Laminas\\Diactoros\\Uri" + "depends": "Zend\\Diactoros\\Uri" } }, "4672a6ee-ad9e-4109-a5d1-b7d46f26c7a1": { @@ -70,7 +70,7 @@ "class": "Http\\Message\\MessageFactory\\DiactorosMessageFactory", "type": "Http\\Message\\ResponseFactory", "parameters": { - "depends": "Laminas\\Diactoros\\Response" + "depends": "Zend\\Diactoros\\Response" } }, "6a9ad6ce-d82c-470f-8e30-60f21d9d95bf": { @@ -88,7 +88,7 @@ "class": "Http\\Message\\StreamFactory\\DiactorosStreamFactory", "type": "Http\\Message\\StreamFactory", "parameters": { - "depends": "Laminas\\Diactoros\\Stream" + "depends": "Zend\\Diactoros\\Stream" } }, "a018af27-7590-4dcf-83a1-497f95604cd6": { @@ -104,7 +104,7 @@ "class": "Http\\Message\\MessageFactory\\DiactorosMessageFactory", "type": "Http\\Message\\RequestFactory", "parameters": { - "depends": "Laminas\\Diactoros\\Request" + "depends": "Zend\\Diactoros\\Request" } } }