Ошибка при использовании промежуточного ПО Slim Framework (v4) - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь использовать middleware в моем Slim route, но у меня есть ошибка:

Неустранимая ошибка: Uncaught ArgumentCountError: Слишком мало аргументов для функции Api \ Middleware \ Auth: : __ invoke (), 2 пройдено

Я пытаюсь:

Индексный файл

<?php

use 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();

Файл промежуточного программного обеспечения

<?php

namespace Api\Middleware;

class Auth {
  public function __invoke($request, $response, $next) {
    echo "Middleware";
    return $next($request, $response);
  }
}

Я читаю и копирую документы , но не могу исправить эту ошибку.

1 Ответ

1 голос
/ 08 января 2020

На основании документации, которую вы связали, промежуточное программное обеспечение в Slim - это либо функция, которая принимает два аргумента, либо объект с методом __invoke magi c, который принимает два аргумента. Передаваемые аргументы Psr\Http\Message\ServerRequestInterface и Psr\Http\Server\RequestHandlerInterface.

Ваша реализация промежуточного программного обеспечения ожидает 3 аргумента.

Она должна выглядеть следующим образом:

class Auth {
    public function __invoke($request, $handler) {
        echo "Middleware";
        return $handler->handle($request);
    }
}
...