From 64036763b21bf9c989410e138ef04ff4cc5e32c0 Mon Sep 17 00:00:00 2001 From: Ivan Novak Date: Fri, 3 Jan 2020 10:42:34 -0600 Subject: [PATCH 1/7] =?UTF-8?q?Utilize=20Symfony=E2=80=99s=20PSR=20Factory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - replace DiactorosFactory with Symfony’s PSR Factory and recommended implementaiton - replace Diactoros Resposne with Nyholm’s Response per Symfony docs recommendation --- src/Illuminate/Routing/RoutingServiceProvider.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Illuminate/Routing/RoutingServiceProvider.php b/src/Illuminate/Routing/RoutingServiceProvider.php index 573143d83a08..e0d2fa356bf8 100755 --- a/src/Illuminate/Routing/RoutingServiceProvider.php +++ b/src/Illuminate/Routing/RoutingServiceProvider.php @@ -7,10 +7,11 @@ use Illuminate\Contracts\View\Factory as ViewFactoryContract; use Illuminate\Routing\Contracts\ControllerDispatcher as ControllerDispatcherContract; use Illuminate\Support\ServiceProvider; +use Nyholm\Psr7\Factory\Psr17Factory; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; -use Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory; -use Zend\Diactoros\Response as PsrResponse; +use Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory; +use Nyholm\Psr7\Response as PsrResponse; class RoutingServiceProvider extends ServiceProvider { @@ -128,7 +129,9 @@ protected function registerRedirector() protected function registerPsrRequest() { $this->app->bind(ServerRequestInterface::class, function ($app) { - return (new DiactorosFactory)->createRequest($app->make('request')); + $psr17Factory = new Psr17Factory; + return (new PsrHttpFactory($psr17Factory, $psr17Factory, $psr17Factory, $psr17Factory)) + ->createRequest($app->make('request')); }); } From 7ff132507aa480fc53505dcee54ed341e7a35585 Mon Sep 17 00:00:00 2001 From: Ivan Novak Date: Fri, 3 Jan 2020 11:14:59 -0600 Subject: [PATCH 2/7] Fix use order per StyleCI --- src/Illuminate/Routing/RoutingServiceProvider.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Illuminate/Routing/RoutingServiceProvider.php b/src/Illuminate/Routing/RoutingServiceProvider.php index e0d2fa356bf8..272daef713e3 100755 --- a/src/Illuminate/Routing/RoutingServiceProvider.php +++ b/src/Illuminate/Routing/RoutingServiceProvider.php @@ -8,10 +8,10 @@ use Illuminate\Routing\Contracts\ControllerDispatcher as ControllerDispatcherContract; use Illuminate\Support\ServiceProvider; use Nyholm\Psr7\Factory\Psr17Factory; +use Nyholm\Psr7\Response as PsrResponse; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory; -use Nyholm\Psr7\Response as PsrResponse; class RoutingServiceProvider extends ServiceProvider { From 98936eecd8c79ff6f31afe3b4596b69a878e6f92 Mon Sep 17 00:00:00 2001 From: Ivan Novak Date: Fri, 3 Jan 2020 11:20:36 -0600 Subject: [PATCH 3/7] Add new line per StyleCI --- src/Illuminate/Routing/RoutingServiceProvider.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Illuminate/Routing/RoutingServiceProvider.php b/src/Illuminate/Routing/RoutingServiceProvider.php index 272daef713e3..af9294f5f102 100755 --- a/src/Illuminate/Routing/RoutingServiceProvider.php +++ b/src/Illuminate/Routing/RoutingServiceProvider.php @@ -130,6 +130,7 @@ protected function registerPsrRequest() { $this->app->bind(ServerRequestInterface::class, function ($app) { $psr17Factory = new Psr17Factory; + return (new PsrHttpFactory($psr17Factory, $psr17Factory, $psr17Factory, $psr17Factory)) ->createRequest($app->make('request')); }); From 69700fee51bb8218f5f04b07b6addb21e832b34f Mon Sep 17 00:00:00 2001 From: Ivan Novak Date: Fri, 3 Jan 2020 11:27:10 -0600 Subject: [PATCH 4/7] Updated composer files with nyholm - updated routing composer on psr-http-bridge language inline with base composer file --- composer.json | 1 + src/Illuminate/Routing/composer.json | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 0c52879ab4f1..bcaaed20348c 100644 --- a/composer.json +++ b/composer.json @@ -128,6 +128,7 @@ "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", "moontoast/math": "Required to use ordered UUIDs (^1.1).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0).", diff --git a/src/Illuminate/Routing/composer.json b/src/Illuminate/Routing/composer.json index 0ef281706f5c..2bb1cadb3e67 100644 --- a/src/Illuminate/Routing/composer.json +++ b/src/Illuminate/Routing/composer.json @@ -39,7 +39,8 @@ }, "suggest": { "illuminate/console": "Required to use the make commands (^6.0).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (^1.2)." + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.2)." }, "config": { "sort-packages": true From 377dffb3b761d272ec246c309e5b8dc9c5e396f4 Mon Sep 17 00:00:00 2001 From: Ivan Novak Date: Fri, 3 Jan 2020 13:05:52 -0600 Subject: [PATCH 5/7] Patch the bridge break and maintain backwards compatibility --- .../Routing/RoutingServiceProvider.php | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/Illuminate/Routing/RoutingServiceProvider.php b/src/Illuminate/Routing/RoutingServiceProvider.php index af9294f5f102..0575ae147e10 100755 --- a/src/Illuminate/Routing/RoutingServiceProvider.php +++ b/src/Illuminate/Routing/RoutingServiceProvider.php @@ -8,10 +8,12 @@ use Illuminate\Routing\Contracts\ControllerDispatcher as ControllerDispatcherContract; use Illuminate\Support\ServiceProvider; use Nyholm\Psr7\Factory\Psr17Factory; -use Nyholm\Psr7\Response as PsrResponse; +use Nyholm\Psr7\Response as NyholmPsrResponse; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; +use Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory; use Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory; +use Zend\Diactoros\Response as ZendPsrResponse; class RoutingServiceProvider extends ServiceProvider { @@ -129,10 +131,15 @@ protected function registerRedirector() protected function registerPsrRequest() { $this->app->bind(ServerRequestInterface::class, function ($app) { - $psr17Factory = new Psr17Factory; + if (class_exists(PsrHttpFactory::class)) { + $psr17Factory = new Psr17Factory; - return (new PsrHttpFactory($psr17Factory, $psr17Factory, $psr17Factory, $psr17Factory)) - ->createRequest($app->make('request')); + return (new PsrHttpFactory($psr17Factory, $psr17Factory, $psr17Factory, $psr17Factory)) + ->createRequest($app->make('request')); + } + if (class_exists(DiactorosFactory::class)) { + return (new DiactorosFactory)->createRequest($app->make('request')); + } }); } @@ -144,7 +151,12 @@ protected function registerPsrRequest() protected function registerPsrResponse() { $this->app->bind(ResponseInterface::class, function () { - return new PsrResponse; + if (class_exists(NyholmPsrResponse::class)) { + return new NyholmPsrResponse; + } + if (class_exists(ZendPsrResponse::class)) { + return new ZendPsrResponse; + } }); } From a97615700990edb3ca5173681921c2826dafc921 Mon Sep 17 00:00:00 2001 From: Ivan Novak Date: Fri, 3 Jan 2020 18:47:46 -0600 Subject: [PATCH 6/7] Exceptions for unresolvable psr request and response --- src/Illuminate/Routing/RoutingServiceProvider.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Illuminate/Routing/RoutingServiceProvider.php b/src/Illuminate/Routing/RoutingServiceProvider.php index 0575ae147e10..125653d376a9 100755 --- a/src/Illuminate/Routing/RoutingServiceProvider.php +++ b/src/Illuminate/Routing/RoutingServiceProvider.php @@ -2,6 +2,7 @@ namespace Illuminate\Routing; +use Exception; use Illuminate\Contracts\Routing\ResponseFactory as ResponseFactoryContract; use Illuminate\Contracts\Routing\UrlGenerator as UrlGeneratorContract; use Illuminate\Contracts\View\Factory as ViewFactoryContract; @@ -137,9 +138,12 @@ protected function registerPsrRequest() return (new PsrHttpFactory($psr17Factory, $psr17Factory, $psr17Factory, $psr17Factory)) ->createRequest($app->make('request')); } + if (class_exists(DiactorosFactory::class)) { return (new DiactorosFactory)->createRequest($app->make('request')); } + + throw new Exception('Unable to resolve PSR request. Please install nyholm/psr7 or laminas/laminas-diactoros.'); }); } @@ -154,9 +158,12 @@ protected function registerPsrResponse() if (class_exists(NyholmPsrResponse::class)) { return new NyholmPsrResponse; } + if (class_exists(ZendPsrResponse::class)) { return new ZendPsrResponse; } + + throw new Exception('Unable to resolve PSR response. Please install nyholm/psr7 or laminas/laminas-diactoros.'); }); } From 3e25c980e3df82a5be1ffc7acb4e920cb558bf5c Mon Sep 17 00:00:00 2001 From: Ivan Novak Date: Fri, 3 Jan 2020 19:18:03 -0600 Subject: [PATCH 7/7] Updated language for contextual clarity and removal of diactoros reference --- src/Illuminate/Routing/RoutingServiceProvider.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Routing/RoutingServiceProvider.php b/src/Illuminate/Routing/RoutingServiceProvider.php index 125653d376a9..2406bdc2540f 100755 --- a/src/Illuminate/Routing/RoutingServiceProvider.php +++ b/src/Illuminate/Routing/RoutingServiceProvider.php @@ -143,7 +143,7 @@ protected function registerPsrRequest() return (new DiactorosFactory)->createRequest($app->make('request')); } - throw new Exception('Unable to resolve PSR request. Please install nyholm/psr7 or laminas/laminas-diactoros.'); + throw new Exception('Unable to resolve PSR request. Please install symfony/psr-http-message-bridge and nyholm/psr7.'); }); } @@ -163,7 +163,7 @@ protected function registerPsrResponse() return new ZendPsrResponse; } - throw new Exception('Unable to resolve PSR response. Please install nyholm/psr7 or laminas/laminas-diactoros.'); + throw new Exception('Unable to resolve PSR response. Please install nyholm/psr7.'); }); }