SlimRoute::__invoke()与中间件不接受正确的$请求&美元的回应


SlimRoute::__invoke() with Middleware is not accepting the right $request & $response

我目前正在使用Slim Framework 3编写REST API,并实现用于基本身份验证的中间件。

我的路由像这样:

$app->group('/api', function () use ($app, $pdo) {
    $this->group('/v1', function () use ($app, $pdo) {
        // Guest Routes
        $this->group('', function() use ($app, $pdo) {
            require_once '../app/api/v1/authentication.php';
        });
        // Authenticated Routes
        $this->group('', function() use ($app, $pdo) {
            require_once '../app/api/v1/test.php';
        })->add(new 'App'Middleware'AuthMiddleware($pdo));
    });
});

在AuthMiddleware类中,我使用__invoke方法如下:

namespace App'Middleware;
use 'Psr'Http'Message'ServerRequestInterface as Request;
use 'Psr'Http'Message'ResponseInterface as Response;
class AuthMiddleware extends Middleware {
/**
 * @param Request $request
 * @param Response $response
 * @param $next
 * @return Response
 */
    public function __invoke(Request $request, Response $response, $next) {
        $response = $next($response, $request);
        return $response;
    }
}

我得到以下错误:

参数1传递给Slim'Route::__invoke()必须实现接口Psr'Http'Message'ServerRequestInterface, Slim'Http'Response给出的实例

$response = $next($response, $request);

发生了什么事?什么好主意吗?我已经为这件事纠结了两个小时了

多谢了!

愚蠢…我注意到在

$response = $next($response, $request);

我颠倒了参数…应该是

$response = $next($request, $response);

Blaahh……我头疼。