定义中间件

时间:2017-11-13 07:33:19

标签: php slim-3

我使用Slim v3PHP-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;
    }
}

有谁能建议我哪里做错了?这个问题的解决方案是什么?

0 个答案:

没有答案