【问题标题】:Adding shortcut in PHP Autoload causes conflict on Laravel在 PHP Autoload 中添加快捷方式会导致 Laravel 发生冲突
【发布时间】:2020-05-18 08:24:15
【问题描述】:

我想问你为什么我在将它添加到composer.json后会出现冲突错误:

"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Models\\": "app/Models/",
        "Controllers\\": "app/Http/Controllers/"
    },
    ...
}

和命名空间里面的所有东西,比如 "app\Models\People\Admin.php"

namespace Models\People;

我之前搜索过这个问题,但没有运气,我错过了什么吗?

谢谢!

【问题讨论】:

  • 你能告诉我们完整的错误信息吗?
  • @RaedYakoubi 最后一条错误信息如下所示:Cannot declare class Models\People\Admin,因为该名称已在使用中

标签: php laravel composer-php autoload psr-4


【解决方案1】:

您收到此错误是因为自动加载器首先包含App\ 下的所有类,其中也包含App\ModelsApp\Controllers 下的所有类,然后再次重新包含这些类,这会导致此问题冲突。

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

  1. 自动加载器递归查找app 目录下的所有类。
  2. 它当然会找到app/Models/People/Admin.phpincludes。
  3. 自动加载app/ 下的所有类后,它开始在app/Models 下查找类文件,找到Admin.php 类文件并再次找到includes。
  4. 抛出错误,因为对于 PHP,您正在执行以下操作:
class Admin {}
class Admin {}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    相关资源
    最近更新 更多