找不到致命错误类MainController

问题描述 投票:0回答:2

所以我有以下结构我想要的目标,但我得到的是Fatal error class MainController not found,我是自动加载和命名空间的新东西(但快速进入他们)我只需要知道为什么会发生这种情况,希望你们有点为我解释一下情况?我确实看到了一些关于stackoverflow的答案,但是有助于,我知道我做的事情确实是错的,但这就是我将如何学习:)。结构体:

composer.json

src/controllers/MainController.php

以下是我在composer.json文件中的自动加载:

"autoload": {
    "psr-4": {
       "controllers\\": "src/controllers/"
     }
}

这就是我的MainController.php看起来很像:

namespace MainController;

class MainController{

  function test($name){

    echo 'holaaaa'.$name;

  }

}

控制器调用内部:app / loads / loadController.php :::

use MainController;

$MainController = new MainController();

有关vendor / autoload.php的更多信息

它包含在:index.php和index.php里面我已经包含了mainapp.php和mainapp.php里面我已经包含了loadcontroller.php vich调用控制器

结构截图:

php namespaces composer-php autoload
2个回答
1
投票

好的,在您的Composer文件中,您说命名空间是controllers。在PHP文件中,您说命名空间是MainController。它们需要相同才能使自动加载工作。

如果我们要使用您的Composer文件,那么PHP应该如下所示:

namespace controllers;
class MainController {}

这个类应该像这样调用:

$MainController = new \controllers\MainController;

或者像这样:

use controllers\MainController;
$MainController = new MainController;

或者,如果你想要一个更好看的类名:

use controllers\MainController as Controller;
$MainController = new Controller;

0
投票

在我的情况下,我只是在从作曲家(供应商)删除我的文件夹并重新运行命令composer dump-autoload后才设法纠正它

© www.soinside.com 2019 - 2024. All rights reserved.