From 2f5119d0b3298ef2a1bb14fce99320512929a218 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sat, 30 Jul 2016 10:08:21 +0200 Subject: [PATCH] Split ContentBasedErrorHandler responsibilities into two separated classes --- config/autoload/services.global.php | 10 ++++-- .../Expressive/ContentBasedErrorHandler.php | 34 ++++++++++--------- .../src/Expressive/ErrorHandlerManager.php | 21 ++++++++++++ ...ory.php => ErrorHandlerManagerFactory.php} | 4 +-- .../ErrorHandlerManagerInterface.php | 9 +++++ 5 files changed, 57 insertions(+), 21 deletions(-) create mode 100644 module/Common/src/Expressive/ErrorHandlerManager.php rename module/Common/src/Expressive/{ContentBasedErrorHandlerFactory.php => ErrorHandlerManagerFactory.php} (88%) create mode 100644 module/Common/src/Expressive/ErrorHandlerManagerInterface.php diff --git a/config/autoload/services.global.php b/config/autoload/services.global.php index d7f56ed6..841a389a 100644 --- a/config/autoload/services.global.php +++ b/config/autoload/services.global.php @@ -1,6 +1,8 @@ InvokableFactory::class, // View - 'Zend\Expressive\FinalHandler' => ContentBasedErrorHandlerFactory::class, + ContentBasedErrorHandler::class => AnnotatedFactory::class, + ErrorHandlerManager::class => ErrorHandlerManagerFactory::class, Template\TemplateRendererInterface::class => Twig\TwigRendererFactory::class, ], 'aliases' => [ Router\RouterInterface::class => Router\FastRouteRouter::class, + 'Zend\Expressive\FinalHandler' => ContentBasedErrorHandler::class, ], ], diff --git a/module/Common/src/Expressive/ContentBasedErrorHandler.php b/module/Common/src/Expressive/ContentBasedErrorHandler.php index 60e1dfdb..df6cde91 100644 --- a/module/Common/src/Expressive/ContentBasedErrorHandler.php +++ b/module/Common/src/Expressive/ContentBasedErrorHandler.php @@ -1,27 +1,29 @@ errorHandlerManager = $errorHandlerManager; } /** @@ -50,11 +52,11 @@ class ContentBasedErrorHandler extends AbstractPluginManager implements ErrorHan $accepts = $request->hasHeader('Accept') ? $request->getHeaderLine('Accept') : self::DEFAULT_CONTENT; $accepts = explode(',', $accepts); foreach ($accepts as $accept) { - if (! $this->has($accept)) { + if (! $this->errorHandlerManager->has($accept)) { continue; } - return $this->get($accept); + return $this->errorHandlerManager->get($accept); } throw new InvalidArgumentException(sprintf( diff --git a/module/Common/src/Expressive/ErrorHandlerManager.php b/module/Common/src/Expressive/ErrorHandlerManager.php new file mode 100644 index 00000000..5cce0095 --- /dev/null +++ b/module/Common/src/Expressive/ErrorHandlerManager.php @@ -0,0 +1,21 @@ +get('config')['error_handler']; $plugins = isset($config['plugins']) ? $config['plugins'] : []; - return new ContentBasedErrorHandler($container, $plugins); + return new ErrorHandlerManager($container, $plugins); } } diff --git a/module/Common/src/Expressive/ErrorHandlerManagerInterface.php b/module/Common/src/Expressive/ErrorHandlerManagerInterface.php new file mode 100644 index 00000000..371cbbf4 --- /dev/null +++ b/module/Common/src/Expressive/ErrorHandlerManagerInterface.php @@ -0,0 +1,9 @@ +