В методе предупреждения PhpStorm withJson не найден (Slim Framework)

В PhpStorm я получаю предупреждающее сообщение "метод предупреждения" withJson "не найден" в \Psr\Http\Message\ResponseInterface" в строке:

return $response->withJson($toReturn, 200);

Код:

use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;


$app->get('/bedrijven', function (Request $request, Response $response) {
    require_once(CLASSES_PATH . "/class_bedrijven.php");
    $Bedrijven = new Bedrijven();

    $toReturn = $Bedrijven->get_bedrijven();
    return $response->withJson($toReturn, 200);
});

Я уже обновил slim framework с помощью composer до последней версии 3.8.1 и добавил Slim в качестве плагина в PhpStorm. Для каталога Vendor установлено значение Sources и Excluded.

Единственный ответ, который я могу найти, это отключить предупреждающие сообщения в PhpStorm в редакторе -> Инспекции -> PHP -> Неопределенный -> метод undefined.

Есть ли лучшее решение?


person Wow    schedule 03.08.2017    source источник
comment
В \Psr\Http\Message\ResponseInterface или родительском интерфейсе нет метода withJson() -- https://github.com/php-fig/http-message/blob/master/src/ResponseInterface.php . Поэтому он должен быть реализован дополнительно в конкретном классе реализации ResponseInterface (например, в классах Slim framework). IDE здесь абсолютно прав.   -  person LazyOne    schedule 03.08.2017
comment
Это не просто проблема PhpStorm, не так ли? Я имею в виду, что сам код тоже не запускается, не так ли?   -  person Álvaro González    schedule 03.08.2017
comment
Это было странно. Я тоже не смог найти withJson(), но он работает нормально. Решение было дано @Nima в ответе.   -  person Wow    schedule 03.08.2017


Ответы (1)


Метод withJson определен не в \Psr\Http\Message\ResponseInterface, а в Slim\Http\Response (который реализует первый), это означает, что этот метод связан с фреймворком Slim. Вы можете попробовать это:

use \Psr\Http\Message\ServerRequestInterface as Request;
use \Slim\Http\Response as Response;
person Nima    schedule 03.08.2017
comment
Большое спасибо! После нескольких часов поиска вы нашли правильный ответ. - person Wow; 03.08.2017