所以我对于我想要定位的内容有以下结构,但我得到的是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调用控制器
结构截图:
答案 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
后,我才设法纠正它