2017-04-17 79 views
0

我刚开始使用Slim Framework创建我的rest API。一切正常,直到我尝试将HTTP请求路由到静态类方法(我之前使用匿名函数)。下面是我的新航线代码上index.phpSlim Framework:将HTTP请求路由到静态类方法

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类上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/" 
    } 
} 
+0

你调用的类'User'不'UserController' – jmattheis

+0

喜@jmattheis,感谢您的纠正。更改了类名并仍然有相同的错误 – red

+0

您是否已经定义了composer autoload? – jmattheis

回答

1

看来你的命名空间是定义不正确。在您的composer.json,类别UserController下命名空间Controllers

,你应该在你的UserController.php顶部定义命名空间:

namespace Controllers; 

,并在您index.php改变$app->get()

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

Yeyyyyy,作品。谢谢@tcPeng。 – red