From a2e9b301d7aabe1a6fede046726c66b67b963181 Mon Sep 17 00:00:00 2001 From: tbreuss Date: Sat, 24 Sep 2022 14:10:51 +0200 Subject: [PATCH] Support for PHP 7.4, 8.0, 8.1, replace zend with laminas --- .gitignore | 4 ++++ .travis.yml | 5 +++-- README.md | 12 +++++------- composer.json | 16 ++++++++-------- src/Factory/DiactorosFactory.php | 22 +++++++++++----------- tests/Factory/DiactorosFactoryTest.php | 11 +++++------ tests/Factory/GuzzleFactoryTest.php | 2 +- tests/Factory/NyholmFactoryTest.php | 2 +- tests/Factory/SlimFactoryTest.php | 2 +- tests/HttpFactoryTest.php | 2 +- 10 files changed, 40 insertions(+), 38 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e80cb13 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/.idea +/.phpunit.result.cache +/composer.lock +/vendor diff --git a/.travis.yml b/.travis.yml index eeb448d..a35f808 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,7 @@ language: php php: -- '7.1' -- '7.2' +- '7.4' +- '8.0' +- '8.1' install: composer install script: composer test \ No newline at end of file diff --git a/README.md b/README.md index a09e54d..10b186b 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,9 @@ [![License](https://img.shields.io/github/license/tbreuss/http-factory.svg)](https://github.com/tbreuss/http-factory/blob/master/LICENSE) [![PHP from Packagist](https://img.shields.io/packagist/php-v/tebe/http-factory.svg)](https://packagist.org/packages/tebe/http-factory) - HTTP-Factory is a PHP package that implements [PSR-17 HTTP factories](https://www.php-fig.org/psr/psr-17/) interface. -It offers auto-discovering support and acts as a simple facade to allow easy access to concrete HTTP Factory packages. +It acts as a simple facade to provide easy access to concrete HTTP factory packets. +As its main feature it offers support for auto-discovery of the supported factories. All PSR-17 interfaces are implemented: @@ -19,13 +19,13 @@ All PSR-17 interfaces are implemented: - Psr\Http\Message\UploadedFileFactoryInterface - Psr\Http\Message\UriFactoryInterface -Additionally it implements a createServerRequestFromGlobals method, which is not part of PSR-17. +Additionally, it implements a createServerRequestFromGlobals method, which is not part of PSR-17. ## Auto-discovering PSR-7 packages The package features auto-discovery support for the following PSR-7 packages: -1. zendframework/zend-diactoros +1. laminas/laminas-diactoros 2. guzzlehttp/psr7 3. slim/slim 4. nyholm/psr7 @@ -33,13 +33,12 @@ The package features auto-discovery support for the following PSR-7 packages: The auto-discovery mechanism assumes that you are using one (and only one) of the above PSR-7 packages in your project. The first detected PSR-17 package will then be used for all interface factory methods. - ## Installation When starting a new project one of the following PSR-7 packages must be installed. ~~~bash -$ composer require zendframework/zend-diactoros +$ composer require laminas/laminas-diactoros $ composer require guzzlehttp/psr7 $ composer require slim/slim $ composer require nyholm/psr7 @@ -95,7 +94,6 @@ $factory->createUploadedFile( ); ~~~ - ## Usage ### Using constructor diff --git a/composer.json b/composer.json index 4370fbb..8381917 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "tebe/http-factory", "type": "library", - "description": "HTTP-Factory with auto-discovery support implementing PSR-17", + "description": "HTTP Factory provides automatic detection for Composer packages implementing the PSR-17 standard", "license": "MIT", "keywords": [ "psr-7", @@ -12,18 +12,18 @@ "http" ], "require": { - "php": "^7.1", + "php": ">=7.4", "psr/http-message": "^1.0", "psr/http-factory": "^1.0" }, "require-dev": { - "zendframework/zend-diactoros": "^1.8", - "slim/slim": "^3.10", - "guzzlehttp/psr7": "^1.4", - "squizlabs/php_codesniffer": "^3.3", - "phpunit/phpunit": "^6.5", + "laminas/laminas-diactoros": "^2.0", + "slim/slim": "^3.0", + "squizlabs/php_codesniffer": "^3.0", "nyholm/psr7": "^1.0", - "nyholm/psr7-server": "^0.3.0" + "phpunit/phpunit": "^9.0", + "nyholm/psr7-server": "^1.0", + "guzzlehttp/psr7": "^2.0" }, "autoload": { "psr-4": { diff --git a/src/Factory/DiactorosFactory.php b/src/Factory/DiactorosFactory.php index 2e4a82b..8f26f2b 100755 --- a/src/Factory/DiactorosFactory.php +++ b/src/Factory/DiactorosFactory.php @@ -3,17 +3,17 @@ namespace Tebe\HttpFactory\Factory; +use Laminas\Diactoros\Response; +use Laminas\Diactoros\ServerRequest; +use Laminas\Diactoros\ServerRequestFactory; +use Laminas\Diactoros\Stream; +use Laminas\Diactoros\UploadedFile; +use Laminas\Diactoros\Uri; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\StreamInterface; use Psr\Http\Message\UploadedFileInterface; use Psr\Http\Message\UriInterface; -use Zend\Diactoros\Response; -use Zend\Diactoros\ServerRequest; -use Zend\Diactoros\ServerRequestFactory; -use Zend\Diactoros\Stream; -use Zend\Diactoros\UploadedFile; -use Zend\Diactoros\Uri; /** * Simple class to create response instances of PSR-7 classes. @@ -21,14 +21,14 @@ class DiactorosFactory implements FactoryInterface { /** - * Check whether Zend Diactoros is available + * Check whether Laminas Diactoros is available */ public static function isInstalled(): bool { - return class_exists('Zend\\Diactoros\\Response') - && class_exists('Zend\\Diactoros\\ServerRequest') - && class_exists('Zend\\Diactoros\\Stream') - && class_exists('Zend\\Diactoros\\Uri'); + return class_exists('Laminas\\Diactoros\\Response') + && class_exists('Laminas\\Diactoros\\ServerRequest') + && class_exists('Laminas\\Diactoros\\Stream') + && class_exists('Laminas\\Diactoros\\Uri'); } /** diff --git a/tests/Factory/DiactorosFactoryTest.php b/tests/Factory/DiactorosFactoryTest.php index 4f5b162..2839ff3 100644 --- a/tests/Factory/DiactorosFactoryTest.php +++ b/tests/Factory/DiactorosFactoryTest.php @@ -2,14 +2,13 @@ namespace Tests\Tebe\HttpFactory; +use Laminas\Diactoros\Response; +use Laminas\Diactoros\ServerRequest; +use Laminas\Diactoros\Stream; +use Laminas\Diactoros\Uri; use PHPUnit\Framework\TestCase; use Psr\Http\Message\UploadedFileInterface; use Tebe\HttpFactory\Factory\DiactorosFactory; -use Zend\Diactoros\Response; -use Zend\Diactoros\ServerRequest; -use Zend\Diactoros\Stream; -use Zend\Diactoros\UploadedFile; -use Zend\Diactoros\Uri; class DiactorosFactoryTest extends TestCase { @@ -18,7 +17,7 @@ class DiactorosFactoryTest extends TestCase */ private $factory; - public function setUp() + protected function setUp(): void { $this->factory = new DiactorosFactory(); } diff --git a/tests/Factory/GuzzleFactoryTest.php b/tests/Factory/GuzzleFactoryTest.php index af5f2db..4218ead 100644 --- a/tests/Factory/GuzzleFactoryTest.php +++ b/tests/Factory/GuzzleFactoryTest.php @@ -17,7 +17,7 @@ class GuzzleFactoryTest extends TestCase */ private $factory; - public function setUp() + protected function setUp(): void { $this->factory = new GuzzleFactory(); } diff --git a/tests/Factory/NyholmFactoryTest.php b/tests/Factory/NyholmFactoryTest.php index 798408d..b540f33 100644 --- a/tests/Factory/NyholmFactoryTest.php +++ b/tests/Factory/NyholmFactoryTest.php @@ -17,7 +17,7 @@ class NyholmFactoryTest extends TestCase */ private $factory; - public function setUp() + protected function setUp(): void { $this->factory = new NyholmFactory(); } diff --git a/tests/Factory/SlimFactoryTest.php b/tests/Factory/SlimFactoryTest.php index 835b1ed..3d0b4e9 100644 --- a/tests/Factory/SlimFactoryTest.php +++ b/tests/Factory/SlimFactoryTest.php @@ -17,7 +17,7 @@ class SlimeFactoryTest extends TestCase */ private $factory; - public function setUp() + protected function setUp(): void { $this->factory = new SlimFactory(); } diff --git a/tests/HttpFactoryTest.php b/tests/HttpFactoryTest.php index d3ce0c3..ade01e2 100644 --- a/tests/HttpFactoryTest.php +++ b/tests/HttpFactoryTest.php @@ -22,7 +22,7 @@ class HttpFactoryTest extends TestCase */ private $factory; - public function setUp() + protected function setUp(): void { HttpFactory::setStrategies([ DiactorosFactory::class,