我使用Slim v3
和PHP-DI
进行依赖注入。我扩展了Slim\App
以定义函数route
来处理路由的所有HTTP方法和中间件。函数的定义:
public function route($method, $pattern, $callableMiddleware, $callable)
{
switch($method) {
case "GET":
if(empty($callableMiddleware)) {
return $this->map(['GET'], $pattern, $callable);
}
return $this->map(['GET'], $pattern, $callable)->add($callableMiddleware);
break;
...
...
default:
throw new Exception("Invalid HTTP Method");
break;
}
}
我试图调用该函数:
$app->route("GET", "/{id}", \App\Middleware\AuthMiddleware::class . '::check', \App\Controllers\Controller::class . "::get");
我遇到了以下问题:
Type: Invoker\Exception\NotCallableException
Message: Cannot call check on App\Middleware\AuthMiddleware because it is not a class nor a valid container entry
File: /var/www/html/event/vendor/php-di/invoker/src/CallableResolver.php
Line: 98
AuthMiddleware.php
namespace App\Middleware;
use Psr\Http\Message\RequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
class AuthMiddleware
{
public function check(Request $request, Response $response) {
return $response;
}
}
有谁能建议我哪里做错了?这个问题的解决方案是什么?