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 - 容器:找不到类的主要内容,如果未能解决你的问题,请参考以下文章
php thinkphp vender第三方类找不到类怎么解决
JETTY,JDK11 发邮件 javax/activation/DataSource类找不到错误