Slim3 - 容器:找不到类

时间:2017-03-09 13:17:24

标签: php slim psr-4

我的源代码结构

  • SRC
    • 控制器
      • Controller.php这样
      • 验证
        • AuthController.php
      • 用户
        • UserController.php
    • 模型

composer.json

"autoload": {
    "psr-4": {
        "App\\": "src/"
    }
},

AuthController.php:

<?php

namespace App\Controllers\Auth;

use App\Models\User;

use App\Controllers\Controller;


class AuthController extends Controller
{  
    ...
}

UserController.php:

<?php

namespace App\Controllers\User;

use App\Models\User;

use App\Controllers\Controller;


class UserController extends Controller
{  
   ...
}

在Slim应用程序中:

$container = $app->getContainer();  

$container['AuthController'] = function ($container){
    return new App\Controllers\Auth\AuthController($container);
};

$container['UserController'] = function ($container){
    return new App\Controllers\User\UserController($container);
};

从UserController调用函数时出现错误:

未找到类'App \ Controllers \ User \ UserController'

IntelliJ还会标记代码并发出通知:未定义的类UserController。

使用AuthController工作正常。

在我看来,我的命名空间错误,但我不知道如何改变它。

我也跑了:

composer dump-autoload -o 

1 个答案:

答案 0 :(得分:0)

您正在使用Controllers作为命名空间类。但在您的目录结构中,controller是小写的。您必须将controllers目录名称大写为Controllers。然后您的命名空间可以使用。