在PHP自动加载中添加快捷方式会导致Laravel上发生冲突

在PHP自动加载中添加快捷方式会导致Laravel上发生冲突,php,laravel,composer-php,autoload,psr-4,Php,Laravel,Composer Php,Autoload,Psr 4,我想问您,为什么在将此添加到composer.json后出现冲突错误: "autoload": { "psr-4": { "App\\": "app/", "Models\\": "app/Models/", "Controllers\\": "app/Http/Controllers/" }, ... } 并为其中的所有内容命名,如“app\Models\People\Admin.php”be namespace Mod

我想问您,为什么在将此添加到composer.json后出现冲突错误:

"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Models\\": "app/Models/",
        "Controllers\\": "app/Http/Controllers/"
    },
    ...
}
并为其中的所有内容命名,如“app\Models\People\Admin.php”be

namespace Models\People;
我以前找过这个问题,但运气不好,我错过了什么吗


谢谢大家!

之所以出现此错误,是因为自动加载器首先包括
App\
下的所有类,这也包括
App\Models
App\Controllers
下的所有类,然后重新包括这些类,从而导致此冲突

为了说明这一点,以下是正在发生的情况:

  • 自动加载程序递归查找
    app
    目录下的所有类
  • 然后,它当然会找到
    app/Models/People/Admin.php
    包含它
  • 在自动加载完
    app/
    下的所有类后,它开始在
    app/Models
    下查找类文件,找到
    Admin.php
    类文件并再次包含它
  • 抛出错误,因为对于PHP,您正在执行以下操作:
  • class Admin{}
    类管理{}
    
    您能向我们显示完整的错误消息吗?@RaedYakoubi最后一条错误消息如下:无法声明class Models\People\Admin,因为该名称已在使用中