我试图middleware在我的中使用 aSlim route但我有一个错误:致命错误:未捕获的 ArgumentCountError:函数 Api\Middleware\Auth::__invoke() 的参数太少,通过了 2 个我正在努力:索引文件<?phpuse Psr\Http\Message\ResponseInterface as Response;use Psr\Http\Message\ServerRequestInterface as Request;use Slim\Factory\AppFactory;use Api\Middleware\Auth;require __DIR__ . '../../../vendor/autoload.php';$app = AppFactory::create();$app->add(new Auth);$app->get('/', function (Request $request, Response $response, $args) { $response->getBody()->write("Start Project"); return $response;});$app->run();中间件文件<?phpnamespace Api\Middleware;class Auth { public function __invoke($request, $response, $next) { echo "Middleware"; return $next($request, $response); }}我正在阅读和复制文档,但无法修复该错误。
1 回答

慕勒3428872
TA贡献1848条经验 获得超6个赞
根据您在 Slim 中链接的中间件的文档,要么是带有两个参数的函数,要么是带有带有__invoke两个参数的魔术方法的对象。传递的参数是Psr\Http\Message\ServerRequestInterface和Psr\Http\Server\RequestHandlerInterface。
您的中间件实现需要 3 个参数。
它应该如下所示:
class Auth {
public function __invoke($request, $handler) {
echo "Middleware";
return $handler->handle($request);
}
}
- 1 回答
- 0 关注
- 119 浏览
添加回答
举报
0/150
提交
取消