Slim3 - 容器:找不到类

Posted

技术标签:

【中文标题】Slim3 - 容器:找不到类【英文标题】:Slim3 - Container: Class not found 【发布时间】: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 

【问题讨论】:

【参考方案1】:

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

【讨论】:

我已经把目录名改成了Controllers但是没有效果。 但是在运行 compose dump-autoload 后它正在工作

以上是关于Slim3 - 容器:找不到类的主要内容,如果未能解决你的问题,请参考以下文章

控制器类找不到 html 模板

php thinkphp vender第三方类找不到类怎么解决

Eclipse中HttpServlet类找不到

JETTY,JDK11 发邮件 javax/activation/DataSource类找不到错误

RegistryKey与RegistryValue类找不到问题处理

RegistryKey与RegistryValue类找不到问题处理