zendframework / zend-problem-details

Provides Problem Details for HTTP APIs (RFC 7807) support for PSR-7 applications.
BSD 3-Clause "New" or "Revised" License
50 stars 18 forks source link

Problem with last Zend Expressive version and middleware #32

Closed Orkin closed 6 years ago

Orkin commented 6 years ago

Hello, I tried this package with the last version of Zend Expressive 3.0.0alpha9 and I have a problem with both middleware : ProblemDetailsNotFoundHandler and ProblemDetailsMiddleware

Code to reproduce the issue

// I just followed the documentation and add the both middleware in my pipeline.php file

Expected results

A beautiful error message in json 😄

Actual results

TypeError raised in file /var/www/vendor/zendframework/zend-problem-details/src/ProblemDetailsResponseFactory.php line 197:
Message: Argument 3 passed to Zend\ProblemDetails\ProblemDetailsResponseFactory::__construct() must implement interface Psr\Http\Message\ResponseInterface or be null, instance of Closure given, called in /var/www/vendor/zendframework/zend-problem-details/src/ProblemDetailsResponseFactoryFactory.php on line 38
Stack Trace:
#0 /var/www/vendor/zendframework/zend-problem-details/src/ProblemDetailsResponseFactoryFactory.php(38): Zend\ProblemDetails\ProblemDetailsResponseFactory->__construct(true, NULL, Object(Closure), NULL, true)
#1 /var/www/vendor/zendframework/zend-servicemanager/src/ServiceManager.php(764): Zend\ProblemDetails\ProblemDetailsResponseFactoryFactory->__invoke(Object(Zend\ServiceManager\ServiceManager), 'Zend\\ProblemDet...', NULL)
#2 /var/www/vendor/zendframework/zend-servicemanager/src/ServiceManager.php(200): Zend\ServiceManager\ServiceManager->doCreate('Zend\\ProblemDet...')
#3 [internal function]: Zend\ServiceManager\ServiceManager->get('Zend\\ProblemDet...')
#4 /var/www/vendor/zendframework/zend-servicemanager/src/AbstractFactory/ConfigAbstractFactory.php(68): array_map(Array, Array)
#5 /var/www/vendor/zendframework/zend-servicemanager/src/ServiceManager.php(764): Zend\ServiceManager\AbstractFactory\ConfigAbstractFactory->__invoke(Object(Zend\ServiceManager\ServiceManager), 'User\\Presentati...', NULL)
#6 /var/www/vendor/zendframework/zend-servicemanager/src/ServiceManager.php(200): Zend\ServiceManager\ServiceManager->doCreate('User\\Presentati...')
#7 /var/www/vendor/zendframework/zend-expressive/src/MiddlewareContainer.php(57): Zend\ServiceManager\ServiceManager->get('User\\Presentati...')
#8 /var/www/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(45): Zend\Expressive\MiddlewareContainer->get('User\\Presentati...')
#9 /var/www/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#10 /var/www/src/OAuth/src/Middleware/ResourceServerMiddleware.php(56): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#11 /var/www/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): OAuth\Middleware\ResourceServerMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#12 /var/www/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#13 /var/www/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(91): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#14 /var/www/vendor/zendframework/zend-expressive-router/src/Route.php(109): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#15 /var/www/vendor/zendframework/zend-expressive-router/src/RouteResult.php(122): Zend\Expressive\Router\Route->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#16 /var/www/vendor/zendframework/zend-expressive-router/src/Middleware/DispatchMiddleware.php(35): Zend\Expressive\Router\RouteResult->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#17 /var/www/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Router\Middleware\DispatchMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#18 /var/www/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#19 /var/www/vendor/zendframework/zend-expressive-helpers/src/UrlHelperMiddleware.php(45): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#20 /var/www/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Helper\UrlHelperMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#21 /var/www/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#22 /var/www/vendor/zendframework/zend-expressive-helpers/src/BodyParams/BodyParamsMiddleware.php(72): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#23 /var/www/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Helper\BodyParams\BodyParamsMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#24 /var/www/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#25 /var/www/vendor/zendframework/zend-expressive-router/src/Middleware/ImplicitOptionsMiddleware.php(68): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#26 /var/www/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Router\Middleware\ImplicitOptionsMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#27 /var/www/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#28 /var/www/vendor/zendframework/zend-expressive-router/src/Middleware/ImplicitHeadMiddleware.php(87): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#29 /var/www/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Router\Middleware\ImplicitHeadMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#30 /var/www/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#31 /var/www/vendor/zendframework/zend-expressive-router/src/Middleware/MethodNotAllowedMiddleware.php(49): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#32 /var/www/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Router\Middleware\MethodNotAllowedMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#33 /var/www/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#34 /var/www/vendor/zendframework/zend-expressive-router/src/Middleware/RouteMiddleware.php(54): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#35 /var/www/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Router\Middleware\RouteMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#36 /var/www/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#37 /var/www/vendor/zendframework/zend-expressive-helpers/src/ServerUrlMiddleware.php(37): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#38 /var/www/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Helper\ServerUrlMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#39 /var/www/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#40 /var/www/vendor/zendframework/zend-stratigility/src/Middleware/ErrorHandler.php(137): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#41 /var/www/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Stratigility\Middleware\ErrorHandler->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#42 /var/www/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#43 /var/www/vendor/zendframework/zend-stratigility/src/Middleware/OriginalMessages.php(41): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#44 /var/www/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Stratigility\Middleware\OriginalMessages->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#45 /var/www/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78):

May I have missed something ?

geerteltink commented 6 years ago

May I have missed something?

No, you didn't miss anything, but this package does. The ResponseFactory changed to a ResponseFactoryFactory: zendframework/zend-expressive#561

samsonasik commented 6 years ago

@Orkin should can be closed now

Orkin commented 6 years ago

@samsonasik yes thanks ;)