Slim Framework: маршрутизация HTTP-запросов на методы статического класса

Я только начал использовать Slim Framework для создания моего API для отдыха. Все работает хорошо, пока я не попытаюсь перенаправить HTTP-запрос на метод статического класса (раньше я использовал анонимную функцию). Ниже приведен мой новый код маршрута на index.php :

 include "vendor/autoload.php"; $config = ['settings' => [ 'addContentLengthHeader' => false, 'displayErrorDetails' => true, 'determineRouteBeforeAppMiddleware' => true ] ]; $app = new \Slim\App($config); $app->get('/user/test', '\App\Controllers\UserController:test'); $app->run(); 

И ниже мой класс UserController.php на UserController.php

 class UserController{ public function test($request, $response, $args){ $array = ['message'=>'your route works well']; return $response->withStatus(STAT_SUCCESS) ->withJson($array); } } 

Сведения об ошибке:

 Type : RuntimeException Message: Callable \Controllers\UserController does not exist File : /var/www/html/project_api/vendor/slim/slim/Slim/CallableResolver.php 

Ниже расположено дерево папок проекта

 project_api/ index.php vendor/ slim/slim/Slim/CallableResolver.php Controllers/ UserController.php 

мой composer.json

 { "require": { "slim/slim": "^3.8", "sergeytsalkov/meekrodb": "*", "slim/http-cache": "^0.3.0" } }, "autoload": { "psr-4": { "Controllers\\": "Controllers/" } } 

Кажется, что ваше пространство имен определено неправильно. В вашем composer.json , классе UserController под Controllers пространства имен.

вы должны определить пространство имен в верхней части вашего UserController.php :

 namespace Controllers; 

и измените $app->get() в index.php на:

 $app->get('/user/test', 'Controllers\UserController:test');