找不到致命错误类MainController

时间:2015-07-19 21:08:34

标签: php namespaces composer-php autoload

所以我对于我想要定位的内容有以下结构,但我得到的是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调用控制器

结构截图:

this is the sreenshot of where files are located.

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

就我而言,只有在从作曲家(供应商)删除文件夹并重新运行命令 composer dump-autoload

后,我才设法纠正它