所以我有以下结构我想要的目标,但我得到的是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调用控制器
结构截图:
好的,在您的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;
在我的情况下,我只是在从作曲家(供应商)删除我的文件夹并重新运行命令composer dump-autoload后才设法纠正它