【问题标题】:Slim3 - Container: Class not foundSlim3 - 容器:找不到类
【发布时间】:2017-07-30 12:03:31
【问题描述】:

我的源代码结构

    • 控制器
      • 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 也会标记代码并给出通知:Undefined class UserController。

使用 AuthController 工作正常。

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

我也跑过:

composer dump-autoload -o 

【问题讨论】:

    标签: php slim psr-4


    【解决方案1】:

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

    【讨论】:

    • 我已经把目录名改成了Controllers但是没有效果。
    • 但是在运行 compose dump-autoload 后它正在工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多