Я только начал использовать 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');