繁体   English   中英

在 PHP Autoload 中添加快捷方式会导致 Laravel 上的冲突

[英]Adding shortcut in PHP Autoload causes conflict on Laravel

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

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

并将其中的所有内容命名为“app\\Models\\People\\Admin.php”

namespace Models\People;

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

谢谢!

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM