diff options
| -rw-r--r-- | app/Http/Middleware/RequestHandler.php (renamed from app/Http/Middleware/WrapHandler.php) | 35 | ||||
| -rw-r--r-- | app/Http/Middleware/Router.php | 5 | ||||
| -rw-r--r-- | phpstan-baseline.neon | 5 |
3 files changed, 16 insertions, 29 deletions
diff --git a/app/Http/Middleware/WrapHandler.php b/app/Http/Middleware/RequestHandler.php index 615d49af80..959121d2ee 100644 --- a/app/Http/Middleware/WrapHandler.php +++ b/app/Http/Middleware/RequestHandler.php @@ -19,31 +19,21 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\Middleware; +use Aura\Router\Route; +use Illuminate\Container\Container; +use Psr\Container\ContainerInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\MiddlewareInterface; use Psr\Http\Server\RequestHandlerInterface; -use function app; +use function is_string; /** * Middleware to run a request-handler. */ -class WrapHandler implements MiddlewareInterface +class RequestHandler implements MiddlewareInterface { - /** @var string|RequestHandlerInterface */ - private $handler; - - /** - * WrapController constructor. - * - * @param string|RequestHandlerInterface $handler - */ - public function __construct($handler) - { - $this->handler = $handler; - } - /** * @param ServerRequestInterface $request * @param RequestHandlerInterface $handler @@ -52,12 +42,17 @@ class WrapHandler implements MiddlewareInterface */ public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { - // A request handler object? - if ($this->handler instanceof RequestHandlerInterface) { - return $this->handler->handle($request); + /** @var Route $route */ + $route = $request->getAttribute('route'); + + $request_handler = $route->handler; + + if (is_string($request_handler)) { + $request_handler = Container::getInstance()->get($request_handler); } - // A string containing a request handler class name - return app($this->handler)->handle($request); + assert($request_handler instanceof RequestHandlerInterface); + + return $request_handler->handle($request); } } diff --git a/app/Http/Middleware/Router.php b/app/Http/Middleware/Router.php index b7c14548a0..25f988a953 100644 --- a/app/Http/Middleware/Router.php +++ b/app/Http/Middleware/Router.php @@ -34,7 +34,6 @@ use Psr\Http\Server\MiddlewareInterface; use Psr\Http\Server\RequestHandlerInterface; use function app; -use function array_map; use function response; use function str_contains; @@ -113,17 +112,15 @@ class Router implements MiddlewareInterface // This middleware cannot run until after the routing, as it needs to know the route. $post_routing_middleware = [CheckCsrf::class]; - $post_routing_middleware = array_map('app', $post_routing_middleware); // Firstly, apply the route middleware $route_middleware = $route->extras['middleware'] ?? []; - $route_middleware = array_map('app', $route_middleware); // Secondly, apply any module middleware $module_middleware = $this->module_service->findByInterface(MiddlewareInterface::class)->all(); // Finally, run the handler using middleware - $handler_middleware = [new WrapHandler($route->handler)]; + $handler_middleware = [RequestHandler::class]; $middleware = array_merge( $post_routing_middleware, diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 3a002dc778..12e0949f4b 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -280,11 +280,6 @@ parameters: path: app/Http/Middleware/UseTransaction.php - - message: "#^Parameter \\#1 \\$callback of function call_user_func expects callable\\(\\)\\: mixed, array\\(mixed, string\\) given\\.$#" - count: 1 - path: app/Http/Middleware/WrapHandler.php - - - message: "#^Access to an undefined property Fisharebest\\\\Webtrees\\\\Fact\\:\\:\\$anniv\\.$#" count: 1 path: app/Http/RequestHandlers/CalendarEvents.php |
